【问题标题】:Using "A little vanilla framework" to build an upload feature使用“A little vanilla framework”构建上传功能
【发布时间】:2019-02-18 10:50:03
【问题描述】:

看着this document;我正在尝试使用XMLHttpRequest 进行文件上传。

我是这样开始的:我在文档的A little vanilla framework 部分获取代码。然后我首先让它在我自己的网站上运行。然后为了实现上传功能,我想修改 register.php 文件的结尾。实际上,那里已经发生了到服务器的文件传输。要称其为上传,我只需将文件保存在服务器上即可。

我在这几行之后这样做:

echo "\n\n:: Files received ::\n\n";
print_r($_FILES);

在那里,我想在服务器上写入 $_FILES[0] 的内容。为此,我使用以下代码:

$myfile = fopen("MyData.jpg", "w");
fwrite($myfile, $_FILES[0]);

// The three lines below that I have tried instead of the one above do not work either.
//fwrite($myfile, json_encode($_FILES['photos']);
//fwrite($myfile, json_encode($_FILES[photos[0]]);
//fwrite($myfile, json_encode($_FILES['photos'][0]);

fclose($myfile);

结果,服务器上按预期写入了一个名为MyData.jpg的文件,但其长度为零。

我认为上面三行有错误,但是,我做错了什么?

【问题讨论】:

  • secure.php.net/manual/en/features.file-upload.php $_FILES[0] 不是文件。这是关于文件的信息。
  • 它可能不会是$_FILES[0]。它将是$_FILES['name_of_form_field']。这将是一个数组,如果您想将数据写入某个地方,您需要使用print_r($_FILES['name_of_form_field'], true)json_encode($_FILES['name_of_form_field']) 或其他东西对其进行字符串化,因此fwrite 知道如何处理它。
  • 感谢您的建议。我试过了,但暂时不起作用。我也更新了我的帖子以反映这一点。

标签: javascript php file-upload xmlhttprequest


【解决方案1】:

正确的方法是使用

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "MyData.jpg");

其中“fileToUpload”是您为文件按钮提供的字段名称

【讨论】:

    【解决方案2】:

    我想你会在这里得到数据:$_FILES['photos']['tmp_name'][0]。 请尝试一下。

    或者

    你可以像下面这样重写你的代码:

    foreach($_FILES['photos']['tmp_name'] as $i=>$file){
        if($_FILES['photos']['error'][$i] == 0){
            move_uploaded_file($file, "MyData_".$i.".jpg");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2012-01-23
      • 2021-12-27
      相关资源
      最近更新 更多