访问实际文件名
Access Actual File Name
对于一些文件名编码问题(西班牙用户)和其他一些问题,我们需要为上传的文件手动构建文件名。
当 Fine Uploader 将信息传递到服务器时,代码会更改目标文件名(在下面的用例中,更改为 "my_name.jpg")。 handler.php 文件将具有该名称的文件保存到文件系统,然后 return 在 uploadName 参数中输入新文件名。这一切都正常工作。
当我 return 通过 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"?
如果您想要访问来自您服务器的任何响应,您必须在 an onComplete
event handler 中进行。响应 JSON 作为传递给您的处理程序的参数包含在内。听起来您想使用更新后的名称(从您的服务器?)向您的服务器发出请求。在同一个处理程序中,您应该发送所需的任何请求。 onComplete
在上传请求完成时触发,onDeleteComplete
在删除请求完成时触发。
对于一些文件名编码问题(西班牙用户)和其他一些问题,我们需要为上传的文件手动构建文件名。
当 Fine Uploader 将信息传递到服务器时,代码会更改目标文件名(在下面的用例中,更改为 "my_name.jpg")。 handler.php 文件将具有该名称的文件保存到文件系统,然后 return 在 uploadName 参数中输入新文件名。这一切都正常工作。
当我 return 通过 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"?
如果您想要访问来自您服务器的任何响应,您必须在 an onComplete
event handler 中进行。响应 JSON 作为传递给您的处理程序的参数包含在内。听起来您想使用更新后的名称(从您的服务器?)向您的服务器发出请求。在同一个处理程序中,您应该发送所需的任何请求。 onComplete
在上传请求完成时触发,onDeleteComplete
在删除请求完成时触发。