【问题标题】:uploading file so what should i do with headers?上传文件那么我应该如何处理标题?
【发布时间】:2014-07-19 09:51:02
【问题描述】:

我们使用 nginx 在我们的服务器上成功设置了图像上传。所有内容都发布到 /upload,然后重定向到 /file 进行处理。文件已上传并存储,但文件顶部有标题。

------WebKitFormBoundaryqUwBABts5uiLHgDN

内容配置:表单数据;名称="图片";文件名="coldplay.jpg"

内容类型:图片/jpeg

我该怎么办?我是否用 PHP 去掉这些标头,然后再次保存文件?

上传带有这些标头的文件是预期行为吗?

这是表格:

<form action="/upload/"  id="upload3" method="post">
    <input type="file" id="file" name="picture" value=""/>
    <input type="submit" onclick="return uploadFiles(this.form);">
</form>

和js:

<script type="text/javascript">

    function uploadFiles(form) {
          var formData = new FormData(form);

          var url = "/upload/";
          var xhr = new XMLHttpRequest();
          xhr.open('POST', url, true);
          xhr.onload = function(e) {
            if (this.status == 200) {
              console.log(this.responseText);
            }
          };

          xhr.send(formData);  // multipart/form-data

          return false;
    }
</script>

【问题讨论】:

  • 您如何上传/存储这些文件?你能展示你用来存储文件的(PHP)代码吗?
  • &lt;form&gt; 标签的 enctype 属性指定使用哪种内容类型,应该使用“multipart/form-data”。
  • @MahasishShome:如果他使用 AJAX 发布表单,则不会。
  • 发生这种情况的唯一方法是,如果您将 raw POST 正文(php://input) 写入文件而不是使用 $_FILES['file']
  • 但据我了解,nginx 上传模块处理上传的方式与 PHP 不同,因此不使用 $_FILES。 wiki.nginx.org/HttpUploadModule

标签: php nginx


【解决方案1】:

我正在使用这些代码行从我们上传的图像文件中删除前四行。我在 SO 的某个地方找到了它,而且效果很好——不幸的是我不知道它在哪里。

$line_to_strip = 4;
$new_file = new SplFileObject($file_full_new, 'w');
foreach (new LimitIterator(new SplFileObject($file_full), $line_to_strip) as $line)
    $new_file->fwrite($line); 

不过,我不知道这是否是我们的永久解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2020-08-15
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多