【发布时间】: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)代码吗?
-
<form>标签的 enctype 属性指定使用哪种内容类型,应该使用“multipart/form-data”。 -
@MahasishShome:如果他使用 AJAX 发布表单,则不会。
-
发生这种情况的唯一方法是,如果您将 raw POST 正文(
php://input) 写入文件而不是使用$_FILES['file']。 -
但据我了解,nginx 上传模块处理上传的方式与 PHP 不同,因此不使用 $_FILES。 wiki.nginx.org/HttpUploadModule