2

我在这里问是希望一些成员对'plupload'足够熟悉以提供帮助。这个小 Jquery 脚本正在解决我的文件上传问题,因此我们将不胜感激。

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

EG p163g1k1er15n310bi18bq1af61rc21.zip

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

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

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

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

4

4 回答 4

5

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

文档

unique_names 上传时生成唯一的文件名。这将为文件生成 unqiue 文件名,以便它们不会与服务器上的现有文件发生冲突。

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

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

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

编辑:我一直在论坛中搜索解决方案,但很短,我的最后一条建议是尝试 HTML5 运行时,看看这是否与 Flash 运行时有关,因为以前的版本存在一些问题. 如果一切都失败了,请在论坛上发帖 - 那里的管理员非常敏感。祝你好运,如果你找到它,请在此处发布解决方案。

于 2011-06-30T12:37:46.333 回答
1

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

于 2011-07-01T08:48:44.420 回答
0

要保留原始文件名,如果您使用 plupload 提供的 upload.php,那么我必须将 upload.php 第 34 行从

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

$fileName = isset($_FILES['file']["name"]) ? $_FILES['file']["name"] : '';
于 2013-02-27T14:35:05.920 回答
0

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

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

添加后在服务器端获取真实文件名(对于upload.php)

$oFileName = $_REQUEST["oFileName"];
于 2016-02-18T09:27:54.927 回答