簡體   English   中英

使用JQuery AJAX發送包含文件和其他json表單數據的multipart / form-data

[英]Send multipart/form-data including a file and additional json form-data with JQuery AJAX

我有一個HTTP API,它等待具有這種結構的multipar / form-data消息:

--boundary
Content-Disposition: form-data; name=""Meta""
Content-Type: application/json

{""Title"":""title"",""Description"":""description"",""Number"":3}
--boundary
Content-Disposition: form-data; name=""file""; filename=""fileName""
Content-Type: text/plain
Content-Transfer-Encoding: 7BIT

some text content
--boundary

我正在嘗試像這樣的FormData消息的結構:

var data = new FormData();
 data.append("Meta", "Content-Type: application/json\r\n\r\n" + [JSON.stringify({ Title: "title", Description: "description", Number: 3})] + "\r\n");
data.append('File', document.getElementById("file").files[0]);

$.ajax({
    url: myservice,
    data: data,
    cache: false,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function (data, status, req) {
        alert("OK"+req);
    },
    error: function (req, status, error) {
        alert("ERROR"+req);
    }
});

但是,我無法將內容類型添加到非文件部分。

通過這種方法,我在Content-Disposition和Content-Type之間留下一條剩余的中斷線

-----------------------------10743159127866
Content-Disposition: form-data; name="Meta"

Content-Type: application/json

{"Title":"title","Description":"description","Number":3}

-----------------------------10743159127866
Content-Disposition: form-data; name="File"; filename="b839f0cc60ac4fb68f826b20cd02873b.pdf"
...
<script type="text/javascript">
$(document).ready(function() {
    $("#submit").click(function() {
        var fileInput = document.getElementById('image');
        var file = fileInput.files[0];
        var formData = new FormData();
        formData.append('file', file);
        $.ajax({
            url: "url.php",
            type: "POST",
            data: "file="+file,
            cache: false,

            success: function(res) {
                alert(res);
            },
            error: function(err){
                alert(err);
            }
        });
    }); 
});
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM