我在这里问,希望有些成员能够熟悉“plupload”来提供帮助。 这个小小的Jquery脚本正在使我的文件上传问题消失,所以任何帮助都将非常感激。
问题: 我可以使用plupload上传大文件,但是当服务器上显示的名称已更改为乱码时,
EG p163g1k1er15n310bi18bq1af61rc21.zip
根据我对基本上传表单的体验,我的假设是它正在编写一个临时文件名,目的是在将chunked部分重新组合在一起时将其重命名为原始文件名,但由于某种原因,它可能没有此
我已将文件夹的权限更改为777,所以我有理由相信这不是问题。
正在使用的运行时是Flash(我需要分块功能)。它的版本是1.4.3.2
一如既往,我们非常感谢任何帮助。
答案 0 :(得分:5)
有一个配置选项可以生成唯一的文件名,而不是使用实际的文件名。
来自docs:
<强> unique_names 强> 上传时生成唯一的文件名。这将产生unqiue 文件的文件名,以便他们 不要与例如碰撞 服务器上现有的。
确保配置中未启用此选项(默认情况下不是这样)。仍然有一些文件名清理例程由默认包含的php上传脚本运行...
// Clean the fileName for security reasons
$fileName = preg_replace('/[^\w\._]+/', '', $fileName);
...如果文件存在(无论配置如何),下划线总是附加一个数字,如filename_2.jpg
,但除此之外,它不应该改变您的文件名。
编辑:我一直在寻找forums的解决方案,但是我的最后一条建议是尝试HTML5运行时,看看这是否与Flash运行时以某种方式,因为有some issues以前的版本。如果所有其他方法都失败了,请在论坛上发布 - 管理员会非常敏感。祝您好运,如果您找到它,请在此处发布解决方案。
答案 1 :(得分:1)
Ploploader使用一个名为“unique_names”的变量;在我的情况下,这被设置为TRUE,但是为了保留实际的文件名,它应该设置为false。解决方案来自Pluploader论坛。
答案 2 :(得分:0)
要保留原始文件名,如果使用plupload提供的upload.php,那么我必须更改upload.php第34行
$fileName = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';
到
$fileName = isset($_FILES['file']["name"]) ? $_FILES['file']["name"] : '';
答案 3 :(得分:0)
我遇到了同样的问题。另一种解决方案是将实际文件名作为新输入注入FormData对象。
(我正在使用chrome和HTML5运行时!)
在O = new FormData();
文件中找到对象var oFileName = $("input[name='oFileName']").val();
O.append("oFileName", V.name);
的创建
和
添加一些注射
$oFileName = $_REQUEST["oFileName"];
此添加后,在服务器端获取真实文件名(对于upload.php)
f.input :from, :as => :select, :collection => ["Kolkata","Mumbai"]