访问实际文件名

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 在删除请求完成时触发。