Plupload 文件名问题

Plupload filename problem

提问人:Username_null 提问时间:6/30/2011 最后编辑:Wesley MurchUsername_null 更新时间:2/18/2016 访问量:8785

问:

我在这里提出这个问题,希望一些成员对“plupload”足够熟悉,以提供帮助。 这个小小的 Jquery 脚本正在使我的文件上传问题消失,因此任何帮助将不胜感激。

问题: 我可以使用 plupload 上传大文件,但是当出现在服务器上时,名称已更改为乱码,

EG p163g1k1er15n310bi18bq1af61rc21.zip

根据我对基本上传表单的经验,我的假设是它正在写出一个临时文件名,目的是在将分块部分重新组合在一起时将其重命名为原始文件名,但由于某种原因,它可能不会这样做。

我已将文件夹的权限更改为 777,因此我有理由确定这不是问题所在。

使用的运行时是 Flash(我需要分块功能)。它是版本 1.4.3.2

与往常一样,任何帮助将不胜感激。

JavaScript jQuery plupload

评论


答:

5赞 Wesley Murch 6/30/2011 #1

有一个配置选项可以生成唯一的文件名,而不是使用实际的文件名。

文档中:

unique_names上传时生成唯一的文件名。这将产生 unqiue 文件的文件名,以便它们 例如,不要与 服务器上的现有。

请确保此选项未在配置中启用(默认情况下未启用)。还有一些文件名清理例程由默认包含的 php 上传脚本运行......

// Clean the fileName for security reasons
$fileName = preg_replace('/[^\w\._]+/', '', $fileName);

...如果文件存在(无论配置如何),下划线总是附加一个数字,例如 ,但除此之外,它不应该更改您的文件名。filename_2.jpg

编辑:我一直在论坛上寻找解决方案,但很快就失败了,我的最后一条建议是尝试HTML5运行时,看看这是否与Flash运行时有关,因为以前的版本存在一些问题。如果所有其他方法都失败了,请在论坛上发帖 - 那里的管理员反应非常迅速。祝你好运,如果你找到它,请在这里发布一个解决方案。

评论

0赞 Username_null 6/30/2011
谢谢,我会寻找这个,看看我是否可以让它工作。
0赞 Username_null 6/30/2011
我按照您的建议注释掉了有问题的行,但不幸的是,我仍然在服务器上获得相同的奇怪文件名。
0赞 Username_null 6/30/2011
我已经检查了编辑是否在服务器上,并使用了不同的浏览器来避免任何缓存问题。如果你不介意,你能告诉我如何检查版本和运行时吗
0赞 Wesley Murch 6/30/2011
@Andrew:如果不是其他地方,版本应该在包含的更新日志中,并且当悬停上传队列时,运行时将显示为工具提示(如果您正在使用它),它还应该在您的配置中定义(可能正在使用 HTML5)。版本也在源码中plupload.js
0赞 Username_null 6/30/2011
感谢 Wesley,使用的运行时是 Flash(我需要分块功能)。它是版本 1.4.3.2
1赞 Username_null 7/1/2011 #2

Ploploader 使用一个名为“unique_names”的变量;在我的情况下,这被设置为 TRUE,但是为了保留实际的文件名,它应该设置为 false。解决方案来自 Pluploader 论坛。

0赞 Onimusha 2/27/2013 #3

为了保留原始文件名,如果您使用 plupload 提供的 upload.php,那么我不得不将 upload.php 行从

$fileName = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';

$fileName = isset($_FILES['file']["name"]) ? $_FILES['file']["name"] : '';
0赞 caglaror 2/18/2016 #4

我也有同样的问题。另一种解决方案是将真实文件名作为新输入注入 FormData 对象。 (我正在使用 chrome 和 HTML5 运行时! 在 File 中查找对象的创建和 添加一些注射剂plupload.html5.jsO = new FormData();

var oFileName = $("input[name='oFileName']").val();
O.append("oFileName", V.name);

添加后,在服务器端获取真实文件名(用于上传 .php)

$oFileName = $_REQUEST["oFileName"];