2012-02-02 48 views
3

我刚开始使用Plupload,这是伟大的,真正有用的,但是我跌倒有点tyring定制它我的需要,因为它太遥远的我的深度。Plupload:如何从PHP脚本处理文件名

基本上我用它来只需上传单个文件,所以我的代码是基于在Plupload论坛上提供的两个基本教程的第二个。我正在使用示例PHP脚本upload.php进行处理。

这一切都完美的作品 - 除了我得到的原始文件名,其中up​​load.php的sanitises。因此,例如,如果文件名中有空格,我的表单提交脚本不起作用,因为它正在寻找具有原始名称的文件。

我能明显得到这个被删除或修改正则表达式的工作,但我真的不希望。我宁愿从upload.php中取回已清理过的文件名,但我不知道如何去做这件事。

我已经在这个主题上搜索了与Plupload相关的内容,并且找不到答案,而且我也无法更全面地搜索我可以应用的smae原则,因为我甚至都不知道我在找什么。任何人都可以对此有所了解吗?

回答

7

upload.php 53线的名称和路径的sanitazation IC完成:

$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName; 

如果你想在PHP中使用的名字,把它返回成功状态(约行130权前的功能);

如果你想使用的文件名在JavaScript中,改变线130和

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

这样的文件名包含在JSON答复。在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 VAR OBJ = JSON.parse(info.response); \t的document.getElementById(” filelist')。innerHTML + =''; \t}); ' – rickibarnes 2012-02-18 08:22:37

+0

这看起来有点废话,没有换行,希望它仍然有意义:P – rickibarnes 2012-02-18 08:23:20

+0

如果你想支持IE7,只要确保使用JSON2作为一个polyfill,因为它没有原生可用的JSON对象。 – 2012-10-11 18:16:44