该方法适用移动端,选择手机图片后得到图片地址,此时需要将该图片地址转换成图片文件然后上传该图片,之前是在cordova混合开发app时,上传图片遇到的问题,因此总结出来。该方法同样适用其他手机端只有图片地址但是要上传图片文件的问题。
思路是:1、将图片地址转换成二进制流。2、上传文件到服务器上。
实现方式如下:
///图片地址转换成二进制流
rLFSURL(imageURI,type,fieldsValue){
var self = this;
//获取本地的图片路径对应的文件
window.resolveLocalFileSystemURL(imageURI,,function(fileEntry){
fileEntry.file(function(file){
var reader = new FileReader();
reader.onloadend = function(e){
var the_file = new Blob([e.target.result ], { type: "image/jpeg" } );
self.actfilesInsr(the_file);
}
})
})
}
//上传文件到服务器上,并且返回保存地址
actfilesInsr = (files) => {
var formData = new FormData();
//将每个文件放入到formData中,这里类似于setAttribute("",Object)
formData.append("files", files,"images.jpg");
$.ajax({
url : '上传图片的地址',
type : 'POST',//post上传图片
data : formData,//上传的文件
processData: false,//这个参数是jquery特有的,不进行序列化,因为我们不是json格式的字符串,而是要传文件
contentType: false,//注意这里一定要设置contentType:false,不然会默认为传的是字符串,这样文件就传不过去了
headers: {"userName":'user', "certificateId":'1'},//可以去掉
success(data){
//上传图片成功
},
error:function(){
//上传图片失败
},
})
}