對於某些文件名編碼問題(西班牙用戶)和其他一些問題,我們需要手動構建上傳文件的文件名。訪問實際文件名
當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"}
但是,con唯一的日誌文件的信息生成:
{
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」?
我不明白這個問題,或者你正在努力完成什麼。你想改變文件的名字嗎?在你的回覆中只需返回一個'uploadName'就不會實現這個功能。 –
@RayNicholus - 當文件名從ajax調用回來時,我需要訪問保存的實際文件名,以便我可以將該信息存儲在數據庫中。我會擴大這個問題。 –
@cale_b嘗試將文件保存爲JSON對象內的base64字符串。用戶可以輸入文件名,或者文件名可以設置爲'js';在整個過程中保留相同的文件名。 – guest271314