欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文件上传

程序员文章站 2022-04-08 09:37:30
...

做APP的时候用到了文件上传,但是使用jq的ajax函数需要设置  processData: false, 不让文件自动序列化,导致传到后台的数据是obj类型的数据,后台解析不了直接,报token 不存在。所以抛弃了ajax 自己决定封装一个原生js的上传文件。

$.ajax({
			    type: 'POST',
			    url: hurl + '/api/Image/upload',
			    data: data,
	            cache: false,  
	            processData: false,
	            contentType: false  ,
			    success:function(res) {
			    // 拿到提交的结果
			      console.log('结果', res);
			      let data = JSON.parse(res);
                        console.log("data",data);
                    	if(data.code == -1){
						mui.toast(data.message);
						}
						if(data.code == 1){
							mui.toast("图片上传成功");
						} 
				},
				error:function (err) {
			    	console.error(err);
				}
				
			});

一下就是我自己封装的函数 可以参考:

//fileArr 就是选择图片的时候讲图片存到这个数组里面

function upimg(){
			var files = fileArr;
			console.log(files);
			upladfile(files,function(res){
				console.log(res);
			})
           
		}
        //上传文件方法
        function upladfile(file,func) {
            let files = file||null,
            xhr,
            url =  hurl + '/api/Image/upload',//服务器路径
            form = new FormData();//formdata对象
            console.log(files);
            for (let i = 0; i < files.length; i++) {
            	form.append("image", files[i]); // 文件对象
           	 } 	
        	form.append("access_token",  acctoken()); // 可以增加表单数据
        	xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
            xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
            xhr.onload = function(evt){
            	var data = JSON.parse(evt.target.responseText);
	            func(data);
            }
            xhr.onerror =  function(){ //请求失败
            	mui.toast("文件上传失败");
            }; 
            xhr.send(form); //开始上传,发送form数据
        }

 

 

 

相关标签: 文件上传