前端页面文件拖拽上传模块是一种比较常见的交互方式,能够让用户通过将本地文件拖拽上传到页面而不必使用传统的文件选择框。下面我们将为大家介绍一份完整的前端页面文件拖拽上传模块js代码示例。
前端页面文件拖拽上传模块是一种比较常见的交互方式,能够让用户通过将本地文件拖拽上传到页面而不必使用传统的文件选择框。下面我们将为大家介绍一份完整的前端页面文件拖拽上传模块js代码示例。
常见的前端拖拽上传模块
前端拖拽上传模块比较常见的有两种方式:
方式1:使用JS原生API实现
使用JS原生API实现文件的拖拽上传,步骤如下:
- 通过getElementById获取页面中的DOM元素,绑定ondragover事件。
- 防止浏览器默认行为,使用e.preventDefault()。
- 获取上传文件的File对象,使用e.dataTransfer.files。
- 发送Ajax请求实现上传文件。
下面是一个示例代码:
var target = document.getElementById('uploadBox');
target.addEventListener('dragover', function(e) {
e.preventDefault();
}, false);
target.addEventListener('drop', function(e) {
e.preventDefault();
var formData = new FormData();
var files = e.dataTransfer.files;
formData.append('file', files[0]);
// 发送Ajax请求,上传文件
var xhr = new XMLHttpRequest();
xhr.open('POST', '/uploadFile', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log('Upload success');
}
};
xhr.send(formData);
}, false);
方式2:使用第三方插件实现
使用第三方插件可以更方便地实现文件的拖拽上传,例如HTML5的FileAPI和jQuery的File Upload插件等。下面是一个使用File Upload插件实现的示例代码:
<input id="fileupload" type="file" name="files[]" multiple>
<div id="dropbox">Drop files here</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.7/js/vendor/jquery.ui.widget.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.7/js/jquery.iframe-transport.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.7/js/jquery.fileupload.min.js"></script>
<script>
$('#fileupload').fileupload({
url: '/uploadFile',
dropZone: $('#dropbox'),
dataType: 'json',
done: function (e, data) {
console.log('Upload success');
}
});
</script>
使用第三方插件需要先引入对应的JS文件,具体使用方法可以查看插件官方文档。“dropZone”表示拖拽上传的区域,“url”表示上传文件的地址,“dataType”表示上传文件的类型。其中,“done”表示上传成功后的回调函数。
以上是两个实现前端文件拖拽上传的示例,希望对你有帮助。
沃梦达教程
本文标题为:前端页面文件拖拽上传模块js代码示例
猜你喜欢
- JavaScript进阶教程之非extends的组合继承详解 2022-10-21
- node以及npm版本不对应出错的完美解决方法 2023-07-10
- Chart.js功能与使用方法小结 2023-12-26
- 老生常谈css中float的用法 2024-02-07
- bigScreen大屏配置选项无法和画布中心的展示联动解决 2023-12-24
- 微信小程序实现底部弹出框 2023-12-26
- vue项目优化 2023-10-08
- 理解jquery ajax中的datatype属性选项值 2022-10-17
- 使用js修改客户端注册表的方法 2023-12-26
- CSS教程之div垂直居中的多种方法 2023-12-15