原生态的ajax如何上传文件,上传文件的两种方式:原生javascript拖拽与jquery

本文详细介绍了HTML5中利用javascript实现文件拖拽上传的功能,包括在拖拽区域添加drop事件,处理文件上传的handleDrop函数,以及具体的AJAX上传代码。还提到了使用jQuery进行文件上传,并展示了如何添加文件参数名以及普通输入框的值。最后,讨论了在AJAX上传中避免出现错误的必要设置。
摘要由CSDN通过智能技术生成

长期以来上传都是在页面放一个input type=file标签,今天发现html5相关的javascript居然可以直接拖拽就可把系统里的文件上传到服务器,当然服务器还需一段接收的java代码。

1.首先在拖拽区域(container)加入drop事件,注册handleDrop函数。var container = document.getElementById("container");

var fileList = document.getElementById("fileList");

container.addEventListener("drop", handleDrop, false);

2.当把文件拖入区域时会触发handleDrop事件,执行ajax上传功能:

function handleDrop(event){

var files = event.dataTransfer.files;

for (var i = 0; i < files.length; i++) {

var file = files[i];

uploadFile(file);

}

}

3.具体的上传代码:

var xhr = new XMLHttpRequest();

var upload = xhr.upload;

upload.addEventListener("progress", uploadProgress, false);

upload.addEventListener("load", uploadSucceed, false);

upload.addEventListener("error", uploadError, false);

xhr.open("POST", "upload.jsp?fileName="+file.name);

xhr.overrideMimeType("application/octet-stream");

//xhr.sendAsBinary(file.getAsBinary());

var fileReader = new FileReader();

var tmp=fileReader.readAsBinaryString(file);

fileReader.οnlοad=function(f){

xhr.sendAsBinary(this.result);

}

jquery上传

html:

  
选择上传文件
js:

function fileChange(){

$("#fileTypeError").html('');

var fileName = $('#file_upload').val();//获得文件名称

var fileType = fileName.substr(fileName.length-4,fileName.length);//截取文件类型,如(.zip)

if(fileType=='.zip'){//验证文件类型,此处验证也可使用正则

$('.sui-loading').show();

$.ajax({

url: '/uploadImg',//上传地址

type: 'POST',

cache: false,

data: new FormData($('#uploadForm')[0]),//表单数据

processData: false,

contentType: false,

success:function(data){

$('.sui-loading').hide();

if(data.retCode==0){

window.location.href="/controller/setPercent";

}

}

});

}else{

$.alert('*上传文件类型错误,支持类型: .zip');

}

}

上面上传的文件不带参数名,如果要文件的参数名可以这样:

var formData = new FormData();

formData.append('img', $('#file_upload')[0].files[0]);

另外普通参数也可按这种方式传值,比如:formData.append('name', $('input[name='name']").val()); 就是把普通的输入框的值传到服务器。

$.ajax的参数为data:formData

如下三个参数的作用:

//报错'append' called on an object that does not implement interface FormData请加入以下三行

cache: false,

processData: false,

contentType: false,

评论:

da74bcf89168acf9be335e51703411ae.png

提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值