前端页面文件拖拽上传模块是一种比较常见的交互方式,能够让用户通过将本地文件拖拽上传到页面而不必使用传统的文件选择框。下面我们将为大家介绍一份完整的前端页面文件拖拽上传模块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代码示例
基础教程推荐
猜你喜欢
- 30.vue的安装 2023-10-08
- js实现带有介绍的Select列表菜单实例 2024-02-06
- JavaScript开发简单易懂的Svelte实现原理详解 2023-08-12
- JavaScript获取当前url根目录(路径) 2024-01-03
- CSS 很酷的透明样式 2024-03-08
- 关于 byval 与 byref 的区别分析总结 2024-01-07
- 小白前端入门笔记(七),HTML5中的main标签 2023-10-28
- VBScript编写Windows防止锁屏脚本程序 2024-01-05
- jQuery滚动条插件nanoscroller使用指南 2024-04-02
- JS实现羊了个羊小游戏实例 2024-01-22