相关疑难解决方法(0)

警告:在第0行的Unknown中,multipart/form-data POST数据中缺少边界

我正在处理文件上传器,当输入被更改时上传图像我的代码是html中的表单

<form method="post" enctype="multipart/form-data">
     <input name="uploaded[]" type="file" id="file_upload"/>
</form>
Run Code Online (Sandbox Code Playgroud)

我的JavaScript和Ajax:

        document.getElementById("file_upload").onchange = function() {
            var id = document.getElementById("user_id").innerHTML;
            var file = document.getElementById("file_upload").files[0];
            alert(file.size);
            var formdata = new FormData();
            formdata.append("filer",file,true);
            var ajax = new XMLHttpRequest();
            ajax.onreadystatechange =
            function(){
                if(ajax.readyState==4 && ajax.status==200){
                    document.getElementById("one").remove();
                    var img = document.createElement('img');
                    var first_path = '/user_image/';
                    var path = first_path.concat(id,'.png');
                    img.setAttribute('alt','User image');
                    img.setAttribute('id','one');                        
                    img.setAttribute('src',path);
                    document.getElementById("user").appendChild(img);  
                    alert("end");
                }    
                else{
                    document.getElementById("one").remove();
                    var img = document.createElement('img');
                    img.setAttribute('src','/img/loading.gif');
                    img.setAttribute('alt','User image');
                    img.setAttribute('id','one');
                    document.getElementById("user").appendChild(img);                        
                }
            }               
            ajax.open("POST","upload_image.php");
            ajax.setRequestHeader("Content-Type", "multipart/form-data");
            ajax.send(formdata);
        };
Run Code Online (Sandbox Code Playgroud)

而我的PHP代码很简单就是测试一切是否正常

require("../includes/config.php"); …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax html5 xmlhttprequest

9
推荐指数
1
解决办法
2万
查看次数

使用XMLHttprequest上传文件 - 在multipart/form-data中缺少边界

我正在使用XMLHttprequest上传文件.这是JS函数,它上传文件:

var upload = function(file) {
    // Create form data
    var formData = new FormData();
    formData.append('file', file);

    var xhr = new XMLHttpRequest();

    // Open
    xhr.open('POST', this.options.action);

    // Set headers
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("Content-Type", "multipart/form-data");
    xhr.setRequestHeader("X-File-Name", file.fileName);
    xhr.setRequestHeader("X-File-Size", file.fileSize);
    xhr.setRequestHeader("X-File-Type", file.type);

    // Send
    xhr.send(formData);
}
Run Code Online (Sandbox Code Playgroud)

在服务器端,在upload.php中我以这种方式读取文件:

file_put_contents($filename, (file_get_contents('php://input')));
Run Code Online (Sandbox Code Playgroud)

一切正常,除了我得到一个PHP警告:

Missing boundary in multipart/form-data POST data in Unknown on line 0.

如果我删除此行: xhr.setRequestHeader("Content-Type", "multipart/form-data");警告消失.

这应该是什么问题?

javascript php xmlhttprequest xmlhttprequest-level2

8
推荐指数
1
解决办法
4万
查看次数

Angular 5 'Content-Type':'multipart/form-data' 被重置为 'application/json'

嗨,我在尝试让 httpClient 补丁请求发送内容类型为“multipart/form-data”的 FormData 时遇到问题。

我已经指定了标题,如图所示:

  private httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'multipart/form-data', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache'
    })
  };
Run Code Online (Sandbox Code Playgroud)

我执行以下操作以保存到 nodejs 服务器:

const formData: FormData = new FormData();
formData.append('materialFile', 'something');
return this.httpClient.patch<any>(this.apiUrl  + loan.id, formData, this.httpOptions);
Run Code Online (Sandbox Code Playgroud)

在我的 Nodejs/Express 服务器上,我执行以下操作:

const Multer  = require('multer');

router.patch('/:id', Multer().fields([{ name: "materialFile", maxCount: 1 }]), (req, res, next) => {
  console.log(req.files['materialFile']);
});
Run Code Online (Sandbox Code Playgroud)

当我检查浏览器上的请求标头时,我看到内容类型是 application/json。

有谁知道为什么?

express multer angular angular-httpclient angular5

3
推荐指数
1
解决办法
7743
查看次数