【问题标题】:$_FILES not getting submitted file$_FILES 没有收到提交的文件
【发布时间】:2016-03-01 09:21:53
【问题描述】:

我正在尝试创建一个表单,人们可以在其中提交要上传的文件,然后链接到 mySQL 数据库。

在 html/php 文件中:

<form enctype=”multipart/form-data” action="process_file.php"  method="post" >
               <!-- First/Last Name input boxes -->
               <p>
                  <label for="fileUpload" id="fileUploadLabel">Proposal File (5MB Maximum):</label>
                  <input type="file" name="fileUpload[]" id="fileUpload" />
               </p>
               <input type="submit" name="submit" id="submit" />
            </form>

还有process_file.php文件:

<?php
     require("../../include/utility.php");
     if($_SERVER["REQUEST_METHOD"]=="POST") {
        print_r($_FILES);
              $dbconn = connectToDB();
              // Get and clean the data.
              $fname = cleanInput($_POST["fname"]);
              $lname = cleanInput($_POST["lname"]);
              $new_filename = str_replace(' ','', basename($_FILES['fileupload']['name']));
              $imageFileType = pathinfo($_FILES['fileUpload']['name'],PATHINFO_EXTENSION);

              printf("File name: $new_filename <br />\n");

              $target_dir = "../proposals/2016";
              $target_file = $target_dir . $lname . "_" . $fname . "_proposal" . $imageFileType;
              printf("File Type is: $imageFileType <br />\n");
     }
     /* [REDACTED] */
 ?>

print_r($files) 总是给我“array()”。周末上网查了一下,今天查了好久都没有。

我检查了编码类型,检查了拼写、大写、添加/删除“[]”以及我能想到的任何其他内容。

我知道它适用于服务器的设置,因为同一服务器上的其他人已经能够让它工作。

有没有人知道为什么这不起作用? (我可以在 [REDACTED] 部分提供更多信息,但由于 $_FILES 为空,因此代码无论如何都不起作用。

【问题讨论】:

  • 什么是论文 ”””””””””””” ””””””””””””” ?
  • ”multipart/form-data” 不要用 Word 编码。
  • fileUpload != fileupload
  • 我不知道你在问什么。要么你按住 * 键的时间太长,要么你所说的任何内容都被审查了。

标签: php file-upload


【解决方案1】:

浏览您的代码:

”multipart/form-data” - 那些大引号让你的脚本窒息。

那些应该是常规的"引号:

"multipart/form-data"

然后您的文件输入包含此名称属性name="fileUpload[]",但您使用的是$_FILES['fileupload'],其中数组完全小写。

数组区分大小写,应该读作$_FILES['fileUpload']

我还注意到,如果2016 是一个文件夹,则此$target_file = $target_dir . $lname 将转换为2016FILE.xxx,而不是可能的预期2016/FILE.xxx

如果是这种情况,那么您需要在其后面添加一个斜杠proposals/2016/

  • 确保所有文件夹都有适当的写入权限。

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存阶段显示错误,而不是在生产阶段。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 2021-02-17
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多