Fineuploader: изменить имя файла пользовательского интерфейса в зависимости от ответа сервера

У меня есть этот виджет автоматической загрузки Fineuploader, который отправляет файл на сервер, нас действительно не волнует имя файла, который отправляет пользователь, нам важно, как серверы называют файл после его сохранения.

Что я хочу сделать, так это иметь возможность изменить имя файла, который Fineuploader показывает на входе, есть ли какой-либо желательный способ сделать это?

В настоящее время я отправляю имя нового файла в ответе JSON на имя, и я знаю, что в обратном вызове onComplete я могу это прочитать, но мне было интересно, как лучше всего установить новое имя после загрузки.

Спасибо


person Esteban Feldman    schedule 05.05.2014    source источник


Ответы (3)


Используйте метод setName:

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

Приведенный выше код предполагает, что ваш сервер возвращает свойство newName в своем ответе на запрос загрузки. Отрегулируйте в соответствии с вашей ситуацией.

person Ray Nicholus    schedule 05.05.2014
comment
Кажется, это не работает... Я отлаживаю, чтобы понять, почему: puu.sh/8ANU0.png Версия Fineuploader: 3.9.0-3 - person Esteban Feldman; 06.05.2014
comment
Извините, забыл передать идентификатор, но все равно это не изменит имя. - person Esteban Feldman; 06.05.2014
comment
Тогда что-то не так с вашим кодом. Фрагмент, который я разместил, должен работать нормально. - person Ray Nicholus; 06.05.2014
comment
Рэй: Я попробовал на консоли... убедился, что "это" был объект Fineuploader, но он все равно не устанавливает имя... см. этот снимок экрана, но теперь я передаю идентификатор в функцию. - person Esteban Feldman; 06.05.2014
comment
Пожалуйста, покажите весь ваш код, связанный с прекрасным загрузчиком. Код, который я разместил, будет работать, если он используется правильно. - person Ray Nicholus; 06.05.2014

К сожалению, плагин FineUploader не предоставляет возможности переименовать файл на сервере, а только способ переименовать имя файла, которое видит пользователь (с помощью метода this.setName(id, response.newName);). Это может быть полезно, если пользовательский файл fubar.jpg переименовывается в fubar2.jpg, потому что на сервере уже есть файл с именем fubar.jpg — в этом случае вы можете захотеть, чтобы пользователь увидел фактическое имя файла своего файла. а не то что на вашем сервере.

Чтобы решить проблему с загрузкой одного файла, вам потребуется настроить функцию "uploadSingleFile" в файле "image-uploader.cfc", добавив следующее сразу после строка <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> 
person Mogul    schedule 21.05.2019

Способ не показывать Input==> Remark или удалять эти 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">
person Sunny    schedule 23.07.2018