代码之家  ›  专栏  ›  技术社区  ›  bits

像curl一样发送post数据

  •  0
  • bits  · 技术社区  · 6 年前

    我使用这个curl命令将文件推送到web服务器

    curl -i -X POST -H 'Content-Type: application/json' -d @./mylocalfile -k https://192.168.1.10:8283/here
    

    我想使用一个简单的网页,而不是我可以选择MyLoaLoad文件,我有这个

    <html>
    <body>
        <input class="file" type="file" id="fafafa" name="fileupload" /><br/>
        <br/>
        <input type="button" value="Submit" onclick="xhrSubmit();" />
        <script type="text/javascript ">
            function xhrSubmit() {
                var file_obj = document.getElementById('fafafa').files[0];
                var fd = new FormData();
                fd.append('fafafa', file_obj);
                xhr = new XMLHttpRequest();
                xhr.open('POST', 'https://192.168.1.10:8283/here', true)
                xhr.setRequestHeader('Content-type', 'application/json');
                xhr.send(fd);
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4) {
                        var obj = JSON.parse(xhr.responseText);
                        console.log(obj);
                    }
                };
            }
        </script>
    </body>
    </html>
    

    但是当我使用web服务器的网页时,我得到了它所期望的对象或数组的响应。

    如何更改JavaScript代码来发送像CURL命令那样的数据,该文件在向Web服务器发布文件时没有问题?

    我的服务器端的完全boost异常是

    Exception <unspecified file>(1): expected object or array
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Aleksandar Grbic    6 年前

    您的内容类型错误。您没有向服务器发送json。

    尝试将内容类型设置为 应用程序/x-www-form-urlencoded

        2
  •  0
  •   Zlatko    6 年前

    我会说,看看你收到的卷曲版本。它不能是应用程序/JSON和文件数据。您需要多部分/表单数据。

        3
  •  0
  •   bits    5 年前

    最后,问题是JSON有效消息和卷发中的许多新行不关心浏览器。