jq写附件上传可支持一个页面多个附件上传,可以查看、删除、放大、缩小、成功后放回id存入数据库
时间: 2023-08-16 18:05:27 浏览: 112
你好,关于你的问题,我可以提供一份基于jQuery的多文件上传代码给你参考。这份代码可以支持一个页面上传多个附件,同时还可以进行查看、删除、放大、缩小等操作。在文件上传成功后,它也可以将文件的id存入数据库。以下是代码示例:
HTML代码:
```html
<div class="file_upload">
<input type="file" name="file[]" multiple>
<button id="upload_btn">上传</button>
</div>
<div class="file_list"></div>
```
JavaScript代码:
```javascript
$(function() {
// 上传按钮点击事件
$('#upload_btn').on('click', function() {
// 获取所有选中的文件
var files = $('input[type="file"]')[0].files;
// 如果没有选中文件,直接返回
if (!files || files.length === 0) {
return;
}
// 遍历文件列表
for (var i = 0; i < files.length; i++) {
// 创建FormData对象,用于上传文件
var formData = new FormData();
formData.append('file', files[i]);
// 发起ajax请求上传文件
$.ajax({
url: '/upload',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data) {
// 上传成功后,将文件id存入数据库,并将文件信息展示在页面上
var res = JSON.parse(data);
if (res.code === 0) {
var fileId = res.data.id;
var fileName = res.data.name;
var fileSize = res.data.size;
var fileUrl = res.data.url;
var fileHtml = '<div class="file_item" data-id="' + fileId + '">' +
'<div class="file_name">' + fileName + '</div>' +
'<div class="file_size">' + fileSize + '</div>' +
'<div class="file_actions">' +
'<a href="' + fileUrl + '" target="_blank">查看</a>' +
'<a href="javascript:;" class="delete_file">删除</a>' +
'<a href="javascript:;" class="zoom_in">放大</a>' +
'<a href="javascript:;" class="zoom_out">缩小</a>' +
'</div>' +
'</div>';
$('.file_list').append(fileHtml);
}
}
});
}
});
// 文件删除按钮点击事件
$('.file_list').on('click', '.delete_file', function() {
var fileId = $(this).closest('.file_item').attr('data-id');
// 发起ajax请求删除文件
$.ajax({
url: '/delete',
type: 'POST',
data: {id: fileId},
success: function(data) {
// 删除文件成功后,从页面上移除文件信息
var res = JSON.parse(data);
if (res.code === 0) {
$(this).closest('.file_item').remove();
}
}
});
});
// 放大按钮点击事件
$('.file_list').on('click', '.zoom_in', function() {
// 获取当前文件的url,使用fancybox展示
var fileUrl = $(this).closest('.file_item').find('a:first').attr('href');
$.fancybox.open(fileUrl);
});
// 缩小按钮点击事件
$('.file_list').on('click', '.zoom_out', function() {
$.fancybox.close();
});
});
```
请注意,上述代码仅提供参考,需要根据实际情况进行修改和适配。同时,代码中的文件上传、删除等接口需要后端提供支持。
阅读全文