【问题标题】:Upload a file with a POST request in php在php中上传带有POST请求的文件
【发布时间】:2015-02-09 18:09:09
【问题描述】:

在将 zip 文件上传到我的服务器时遇到问题。 move_uploaded_file 函数每次都失败。我不明白这个问题。文件夹权限为 777,文件大小约为 2 Mb。

<html>
  <body>

    <form action="../API/upload_zip.php" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload Zip" name="submit">
    </form>

  </body>
</html>

-

<?php
    $target_dir = "../uploads/";
    $machineID="H725";
    $path=$target_dir.$machineID;
    if (!file_exists($path)) 
    {
        if(!mkdir($path, 0777, true)) die('Failed to create folders 1...');

        chmod($path, 0777);
    }      

    $pathWithData= $path."/".date("Y_m_d_h_i");
    if (!file_exists($pathWithData)) 
    {
        if(!mkdir($pathWithData, 0777, true)) die('Failed to create folders 2...');

        chmod($pathWithData, 0777);
    } 

    $final_path = $pathWithData ."/". basename($_FILES["fileToUpload"]["name"]);
    echo "PATH: ".$final_path."<br>";


    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $final_path))
    {
        echo "<br>The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    }
    else 
    {
        echo "<br>Sorry, there was an error uploading your file.";
    }
?>

【问题讨论】:

  • 您是否收到权限被拒绝错误或其他错误?此外,它是否发生在一个小文件上,比如 10kb?
  • 您有错误报告吗?
  • 这是$final_path "../uploads/H725/2015_02_09_09_26/Archive.zip" 的内容是正确的,并且在服务器上创建两个文件夹没有问题
  • 你能告诉我对于大文件我必须更改 php.ini 的哪个选项吗??

标签: php upload


【解决方案1】:

只是为了确定,但您的主机有一个file_uploads = On,对吗?检查 php.ini 或创建phpinfo();

另外,尝试使用 var_dump($_FILES); 回显您的 $_FILES 如果上传没有问题,[error] 应该为 0。这些是返回的错误常量:

UPLOAD_ERR_OK: 0
UPLOAD_ERR_INI_SIZE: 1
UPLOAD_ERR_FORM_SIZE: 2
UPLOAD_ERR_NO_TMP_DIR: 6
UPLOAD_ERR_CANT_WRITE: 7
UPLOAD_ERR_EXTENSION: 8
UPLOAD_ERR_PARTIAL: 3

在 php.ini 中,更改这些值:

upload_max_filesize = 100M
post_max_size = 100M

【讨论】:

  • file_uploads 已打开,我已将最大文件大小增加到 150Mb。这是 var_dump($_FILES) 的内容: array(1) { ["fileToUpload"]=> array(5) { ["name"]=> string(11) "Archive.zip" ["type"]= > string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) } }
  • 所以问题是这个 UPLOAD_ERR_INI_SIZE 值:1;上传的文件超过了 php.ini 中的 upload_max_filesize 指令。谢谢!
  • 你能告诉我对于大文件我必须更改 php.ini 的哪个选项吗??
  • 检查我更新的答案,你必须改变upload_max_filesizepost_max_size
  • 我明白问题所在,我把php5文件夹里的php.ini改成了apache2里的php.ini。现在它工作正常。非常感谢。
猜你喜欢
  • 2018-06-25
  • 2021-08-10
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多