Fineuploader:根据服务器响应更改UI文件名

时间:2014-05-05 22:13:03

标签: javascript fine-uploader

我有这个Fineuploader自动上传小部件将文件发送到服务器,我们真的不关心用户发送的文件的名称,我们关心的是服务器在保存文件后命名的文件。

我想要做的是能够更改Fineuploader在输入中显示的文件的名称,有没有理想的方法呢?

目前我在JSON响应中发送新文件名是一个名字,我知道在onComplete回调中我可以读到它,但我想知道上传后设置新名称的最佳方法是什么。

由于

3 个答案:

答案 0 :(得分:1)

使用setName method

callbacks: {
    onComplete: function(id, name, response) {
        this.setName(id, response.newName);
    }
}

上面的代码假设您的服务器在响应上传请求时返回newName属性。根据您的情况调整。

答案 1 :(得分:1)

不幸的是,FineUploader插件没有提供重命名服务器上文件的方法,只是提供了一种重命名用户所见内容的文件名的方法(通过使用方法 this.setName(id,response.newName)) ; )。如果用户的文件是fubar.jpg并被重命名为fubar2.jpg,这可能很有用,因为服务器上已经存在一个名为fubar.jpg的文件-在这种情况下,您可能希望用户查看其文件的实际文件名而不是您的服务器上。

要解决单个文件上传的问题,您需要通过添加以下内容来调整文件“ image-uploader.cfc ”中的功能“ uploadSingleFile ”在 <cffile action="upload" ...

行之后
<!--- We now want to rename the file on our server to prevent any issues with name strings --->
<cfset newFullFileName = "newfile_#randRange(1, 100000000)#.#FILE.serverFileExt#">
<cffile action="rename" source="#fileUploadDirectory#\#FILE.serverFile#" destination="#fileUploadDirectory#\#newFullFileName#">

上面的代码将上传的文件重命名为“ newfile _ ####”,其中####是一个随机的8位数字。

您还需要像下面这样更新返回响应中的 server_filename 元素:

<cfset local.response['server_filename'] = newFullFileName>

下面是一些重要的返回结构元素的解释:

<!--- The original file's FULL filename that the user sees (eg. 'contract 123.jpg') --->
<cfset local.response['client_filename'] = FILE.clientFile>

<!--- The file extension of the user's file (eg. jpg, gif, doc, pdf, etc.) --->
<cfset local.response['client_fileextension'] = FILE.clientFileExt> 

<!--- The renamed FULL filename of the uploaded file on our server (eg. cs_83237453.jpg) (OLD WAY: FILE.serverFile) ---> 
<cfset local.response['server_filename'] = newFullFileName>

<!--- The file extension of the uploaded file (eg. jpg, gif, doc, pdf, etc.) --->
<cfset local.response['server_fileextension'] = FILE.serverFileExt> 

答案 2 :(得分:0)

不显示输入的方式==> 在用户界面上选中或删除这2行,不要让用户编辑文件名。

     <span class="qq-edit-filename-icon-selector qq-edit-filename-icon" aria-label="Edit filename"></span>
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">