对于某些文件名编码问题(西班牙用户)和其他一些问题,我们需要手动构建上传文件的文件名。
当Fine Uploader将信息传递给服务器时,代码会将目标文件名(在下面的用例中)更改为“my_name.jpg”。 handler.php文件将具有该名称的文件保存到文件系统,然后在uploadName参数中返回该新文件名。这一切都正常。
当我通过uploadName参数将该信息返回到Fine Uploader时,我希望能够在javascript中访问该新文件名,以便我可以调用将文件名存储到数据库中。
相关代码如下:
设定:
var settings = {
debug: true,
request: {
endpoint: 'ajax/endpoint.php',
},
deleteFile: {
enabled: true,
endpoint: 'ajax/endpoint.php'
},
retry: {
enableAuto: true
},
callbacks: {
onComplete: function(id, name, response) {
this.setName(id, response.uploadName);
}
},
autoUpload: true,
editFilename: false,
retry: {
enableAuto: true
},
resume: {
enabled: true
},
chunking: {
enabled: false
},
session: {
endpoint: 'ajax/initialfiles.php'
},
validation: {
allowedExtensions: ['jpg', 'gif', 'png'],
itemLimit: 3,
sizeLimit: 5000000
}
};
代码:
$uploaderDiv = $('#fine-uploader');
uploaderObj = $uploaderDiv.fineUploader(settings).on("statusChange", function (event, id, oldStatus, newStatus) {
if (newStatus == 'upload successful' || newStatus == 'deleted') {
var files = uploaderObj.fineUploader('getUploads');
$.each(files, function (i, file) {
if (file.status == 'upload successful') {
console.log(file);
}
});
}
});
上传文件时,服务器的响应为:
{"success":true,"uuid":"f542c893-920a-4f58-a57f-7bd5d0f45294","uploadName":"my_name-715.jpg"}
但是,文件信息的控制台日志会生成:
{
batchId: "98b6a0c0-28ed-466f-8d69-9cea425c20a9"
id: 0
name: "Karen_Book (thumb).jpg",
originalName: "Karen_Book (thumb).jpg",
proxyGroupId: "acf40500-9c8b-4c6e-a4f6-2542443d458d",
size: 5977
status: "upload successful",
uuid: "f542c893-920a-4f58-a57f-7bd5d0f45294"
}
鉴于上述情况,如何在statusChange事件中获取文件名“my_name-715.jpg”?
答案 0 :(得分:1)
如果您想要访问服务器的任何响应,则必须在an onComplete
event handler内进行。响应JSON包含在传递给处理程序的参数中。听起来您想要使用更新的名称(来自您的服务器?)向您的服务器发出请求。在同一个处理程序中,您应该发送所需的任何请求。上传请求完成时会触发onComplete
,并在删除请求完成时触发onDeleteComplete
。