最近遇到需求,一次性上传多张图片到阿里云。
1.代码如下:
function ALIcloud(host,policy,signature,accessid,dir,expire){
//将图片上传给阿里云服务器
var fileList = document.getElementById("file").files;
alert(fileList.length)
var ossData = new FormData();
for (var i = 0; i < document.getElementById("file").files.length; i++) {
ossData.append("file[]", fileList[i])
console.log(ossData.getAll('file[]'));
}
// return;
// 添加配置参数
ossData.append('OSSAccessKeyId', accessid);
ossData.append('policy', policy);
ossData.append('Signature', signature);
ossData.append('key', dir);
ossData.append('success_action_status', 201); // 指定返回的状态码
// ossData.append("file", document.getElementById("file").files[0])
$.ajax({
url:host,
type:'POST',
data:ossData,
dataType: 'xml', // 这里加个对返回内容的类型指定
processData: false,//不需要进行序列化处理
async: false,//发送同步请求
contentType: false,//避免服务器不能正常解析文件
success:function (ret) {
$(".loading").hide();
var url = $(ret).find("Location").text();
arr.push(url);
},
error: function(xhr) {
alert("错误提示: " + xhr.status + " " + xhr.statusText);
}
});
}
2.代码截图
3.结果
我能打印出我上传的文件
但是上传到阿里云的时候报错
我提交的信息如下:
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="file[]"; filename="pause.png"
Content-Type: image/png
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="file[]"; filename="play.png"
Content-Type: image/png
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAIsGh8ozwyuFIB
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAxNy0wOS0yMVQxODoyMzozNFoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsInVwbG9hZFwvIl1dfQ==
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="Signature"
NayjN9ompTmwn/H51uje7XE29lo=
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="key"
upload/${filename}
------WebKitFormBoundaryXmbASDfUBAHXSFac
Content-Disposition: form-data; name="success_action_status"
201
------WebKitFormBoundaryXmbASDfUBAHXSFac--
已经用了笨方法解决,用for循坏一个个像传输一张图片一样传过去。望大神们有什么好方法提供。