2012-02-02 1 views
3

Я только что начал использовать Plupload, который велик и действительно полезен, однако я падаю немного, чтобы настроить его на свои нужды, потому что он слишком далеко от моя глубина.Plupload: как получить имя файла из скрипта обработки PHP

В основном я использую его, чтобы загрузить только один файл, поэтому мой код основан на втором из двух основных руководств, которые представлены на форуме Plupload. Я использую образец PHP-скрипта, upload.php для обработки.

Все работает отлично - за исключением того, что я получаю исходное имя файла, который выдает саундтрек upload.php. Так что если есть, например, пробел в имени файла, мой скрипт отправки формы не работает, потому что он ищет файл с исходным именем.

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

Я искал эту тему по отношению к Plupload и не могу найти ответ, и я не могу искать более обобщенно для принципа smae, который я мог бы применить, потому что я даже не знаю достаточно что я ищу. Может кто-нибудь пролить некоторый свет на это?

ответ

7

В строке 53 upload.php sanitazation имени и пути IC завершения:

$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName; 

Если вы хотите использовать имя в PHP, вызовите функцию перед его возвращает статус успеха (около линии 130);

Если вы хотите использовать имя файла в JavaScript, изменить ответ JSON в линии 130 к

die('{"jsonrpc" : "2.0", "result" : null, "id" : "id", "cleanFileName" : "'.$fileName.'"}'); 

поэтому имя файла включена. В Javascript вы добавить функцию обратного вызова:

uploader.bind('FileUploaded', function(up, file, info) { 
    console.log(info.response); 
}); 

info.response является строка JSON возвращается и будет включать в себя имя файла после переименования на сервере.

+1

Большое спасибо за это, я думаю, что у меня есть это сейчас. Я использую этот код, я не думаю, что вы могли бы сказать мне, хорошо ли это сделать? Это работает, я никогда не использовал JSON раньше, поэтому я не знаю, является ли это лучшей практикой или нет. 'Uploader.bind ('FileUploaded', функция (вверх, файл, информация) { \t console.log (info.response); \t вар OBJ = JSON.parse (info.response); \t document.getElementById (» filelist '). innerHTML + =' '; \t}); ' – rickibarnes

+0

Что выглядит немного дерьмо, выложенное без новых строк, мы надеемся, что это все еще имеет смысл: P – rickibarnes

+0

Просто не забудьте использовать JSON2 в качестве полизаполнения, если вы хотите поддерживать IE7, поскольку он не имеет доступного объекта JSON. –