【问题标题】:php Form fileupload problem with whitespaces in filenamephp表单文件上传问题,文件名中有空格
【发布时间】:2010-07-20 20:00:04
【问题描述】:

我仍然有空格的问题:

我有一个供用户上传 mp3 文件的上传表单。它工作正常,除非文件名中有空格。目前我告诉用户不要使用带有空格的文件名,但显然在 mp3 中使用它们很常见。所以我想解决这个问题。会发生什么:

通常:

用户使用 html 文件输入表单选择没有空格的文件:

<form method="post" enctype="multipart/form-data" name="form2" id="form2" action="' . $_SERVER[PHP_SELF] . '">
<input type="file" style="color:#888888" name="file" id="file" />

然后,在服务器端,我使用

处理文件
copy($_FILES['file']['tmp_name'], $newfilename);

这很好用。

不正常:

用户选择文件名中带有空格的文件。 print_r($_POST) 看起来像这样:

Array ( [x] => 21 [y] => 32 )

而 print_R($_FILES) 看起来像这样:

Array ( [file] => Array ( [name] => 11. test with spaces.mp3 [type] => [tmp_name] => [error] => 1 [size] => 0 ) )

由于 tmp_name 为空,脚本无法访问该文件,因此我们遇到了一个丑陋的错误... 所以我认为我需要操作 [tmp_name],使其没有空格,因为我的 Apache/Linux 服务器似乎有问题。有没有人知道如何解决这个问题?

问候和感谢

梅尼

【问题讨论】:

    标签: php whitespace file-upload


    【解决方案1】:

    Array ( [file] =&gt; Array ( [name] =&gt; 11. test with spaces.mp3 [type] =&gt; [tmp_name] =&gt; [error] =&gt; 1 [size] =&gt; 0 ) )

    错误码 1 表示上传的文件超过了 php.ini 中的 upload_max_filesize 指令。也许这是你的问题。

    【讨论】:

    • 伙计,我现在感觉很愚蠢 - 我的 POST_max_size 正确,但 max_upload_size 没有。你能告诉我你在哪里找到错误代码定义吗?谢谢
    • 您可以在 php.net 网站上找到定义:php.net/manual/en/features.file-upload.errors.php
    【解决方案2】:

    我强烈建议不要使用真实的文件名,因为如果你想扩大规模,你会遇到很多麻烦,如果你想保留原始文件名,请使用一个额外的字段。 ;)

    希望对你有所帮助。

    【讨论】:

    • 我的错,我没有提到它 - 你的我重命名了文件名 - 事情是,当我有一个 $_FILES[tmp_name] 因为服务器不处理空格而为空时,我可以甚至不重命名任何东西,更不用说复制了。
    • 它只发生在带有空格的 mp3 文件或任何带有空格的文件上? (你检查过 aurismasL 所说的尺寸吗?)
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多