提问人:Username_null 提问时间:6/30/2011 最后编辑:Wesley MurchUsername_null 更新时间:2/18/2016 访问量:8785
Plupload 文件名问题
Plupload filename problem
问:
我在这里提出这个问题,希望一些成员对“plupload”足够熟悉,以提供帮助。 这个小小的 Jquery 脚本正在使我的文件上传问题消失,因此任何帮助将不胜感激。
问题: 我可以使用 plupload 上传大文件,但是当出现在服务器上时,名称已更改为乱码,
EG p163g1k1er15n310bi18bq1af61rc21.zip
根据我对基本上传表单的经验,我的假设是它正在写出一个临时文件名,目的是在将分块部分重新组合在一起时将其重命名为原始文件名,但由于某种原因,它可能不会这样做。
我已将文件夹的权限更改为 777,因此我有理由确定这不是问题所在。
使用的运行时是 Flash(我需要分块功能)。它是版本 1.4.3.2
与往常一样,任何帮助将不胜感激。
答:
有一个配置选项可以生成唯一的文件名,而不是使用实际的文件名。
从文档中:
unique_names上传时生成唯一的文件名。这将产生 unqiue 文件的文件名,以便它们 例如,不要与 服务器上的现有。
请确保此选项未在配置中启用(默认情况下未启用)。还有一些文件名清理例程由默认包含的 php 上传脚本运行......
// Clean the fileName for security reasons
$fileName = preg_replace('/[^\w\._]+/', '', $fileName);
...如果文件存在(无论配置如何),下划线总是附加一个数字,例如 ,但除此之外,它不应该更改您的文件名。filename_2.jpg
编辑:我一直在论坛上寻找解决方案,但很快就失败了,我的最后一条建议是尝试HTML5运行时,看看这是否与Flash运行时有关,因为以前的版本存在一些问题。如果所有其他方法都失败了,请在论坛上发帖 - 那里的管理员反应非常迅速。祝你好运,如果你找到它,请在这里发布一个解决方案。
评论
plupload.js
Ploploader 使用一个名为“unique_names”的变量;在我的情况下,这被设置为 TRUE,但是为了保留实际的文件名,它应该设置为 false。解决方案来自 Pluploader 论坛。
为了保留原始文件名,如果您使用 plupload 提供的 upload.php,那么我不得不将 upload.php 行从
$fileName = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';
自
$fileName = isset($_FILES['file']["name"]) ? $_FILES['file']["name"] : '';
我也有同样的问题。另一种解决方案是将真实文件名作为新输入注入 FormData 对象。
(我正在使用 chrome 和 HTML5 运行时!
在 File 中查找对象的创建和
添加一些注射剂plupload.html5.js
O = new FormData();
var oFileName = $("input[name='oFileName']").val();
O.append("oFileName", V.name);
添加后,在服务器端获取真实文件名(用于上传 .php)
$oFileName = $_REQUEST["oFileName"];
评论