此应用程序是一种图像上传工具,可使用 Plupload 将图像直接从客户端浏览器上传到 Amazon S3。到目前为止,除此问题外一切正常。
我有这段代码用于BeforeUpload
事件。
init: {
BeforeUpload: function (up, file) {
$.ajax({
url: '/ServerTime.ashx',
dataType: 'text',
data: { format: "yyyy-MM-dd_HH.mm.ss.fffffff" },
type: 'POST',
cache: false
}).done(function (data) {
console.log("Before setting ImageName: " + data);
imageName = data + ".JPG";
console.log("After setting ImageName: " + imageName);
up.settings.multipart_params = {
'key': key,
'Filename': imageName,
'acl': 'public-read',
'success_action_status': '201',
'AWSAccessKeyId': accessKey,
'policy': policyDocument,
'signature': policySignature
};
});
}
}
但是,我在尝试上传文件时遇到了这个错误:
HTTP Error. Upload URL might be wrong or doesn't exist.
在控制台上,它正在打印如下预期结果:
Before setting ImageName: 2014-04-04_13.33.45.1155072
After setting ImageName: 2014-04-04_13.33.45.1155072.JPG
我想可能是因为我正在使用 AJAX 从服务器获取时间,所以出了点问题。另一方面,尝试使用以下代码没有任何问题。
init: {
BeforeUpload: function (up, file) {
up.settings.multipart_params = {
'key': "This_Is_Folder_Name/This_Is_File_Name.JPG",
'Filename': "This_Is_File_Name.JPG",
'acl': 'public-read',
'success_action_status': '201',
'AWSAccessKeyId': accessKey,
'policy': policyDocument,
'signature': policySignature
};
}
}
请注意,这次我为 Filename 和 key 使用静态名称,而且也没有 AJAX
我真的需要帮助解决这个问题。请建议我。使用 AJAX 获取服务器时间并将其用作文件名时我做错了什么? 谢谢。
最佳答案
您可以通过执行以下操作来覆盖他们的一些代码:
init: {
BeforeUpload: function (up, file) {
$.ajax({
url: '/ServerTime.ashx',
dataType: 'text',
data: { format: "yyyy-MM-dd_HH.mm.ss.fffffff" },
type: 'POST',
cache: false
}).done(function (data) {
console.log("Before setting ImageName: " + data);
imageName = data + ".JPG";
console.log("After setting ImageName: " + imageName);
up.settings.multipart_params = {
'key': key,
'Filename': imageName,
'acl': 'public-read',
'success_action_status': '201',
'AWSAccessKeyId': accessKey,
'policy': policyDocument,
'signature': policySignature
};
file.status = plupload.UPLOADING;
up.trigger("UploadFile", file);
});
return false;
}
}
这会取消他们的触发,因此您必须自己触发。请注意,我还没有对此进行测试。
编辑:我不确定 up
和 file
是否超出范围......
关于javascript - BeforeUpload 事件中的 $.ajax - Plupload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864949/