Ajax在没有webkitboundary

时间:2015-09-25 19:01:21

标签: jquery ajax html5

我只想在Ajax调用中发送原始纯文本而不需要其他标题内容:

------WebKitFormBoundarycwwJjby5xTdrlr48
Content-Disposition: form-data; name="upload"; filename="any"
Content-Type: ....

Ajax电话:

var fd = new FormData();    
fd.append( 'file', input.files[0] );

$.ajax({
  url: '/handle_restful_call',
  data: fd,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    alert(data);
  }
});

更新: 我不是在服务器端使用php。 回到主题是否可以只发送原始数据?

4 个答案:

答案 0 :(得分:1)

XHR 2支持文件上传。我不认为你可以用jQuery做到这一点,但你可以用原生的XMLHttpRequest来做。

var file = input.files[0];

var xhr = new XMLHttpRequest;
xhr.open('POST', '/handle_restful_call');

xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader('X-File-Name', file.name);
xhr.setRequestHeader('Content-Type', file.type||'application/octet-stream');

xhr.onreadystatechange = function(){
    if(xhr.readyState === 4 && xhr.status === 200){
        var response = xhr.responseText;
    }
};

xhr.send(file);

答案 1 :(得分:0)

使用serialize(): 给你的表单一个id:

<form id="myForm" method "POST">
...your fields here
</form>

使用Javascript:

var datastring = $("#myForm").serialize();  
$.ajax({
    type: 'POST',
    url: 'http://example.com/script.php',
    data: datastring
}).done(function(response){
    var response = $.trim(response); //the response -if any- from php
});

在ajax文件中,您可以使用$ _POST解析所有表单字段。例如:

<?php
$username = $_POST["username"]; //etc...
?>

如果要将文本文件传递给ajax,请创建textarea并将文件内容转储到那里。然后将它传递给ajax ......我不知道你真正想做什么,但希望这对你有所帮助......

答案 2 :(得分:0)

我完全没有使用new FormData构造函数并直接将文件作为正文传递

fetch(url, { body: input.files[0], method: ..., headers: ... }

这样的东西

答案 3 :(得分:0)

您可以通过以下方式获取输入文件内容:

var obj=document.getElementById("inputfile");
upload(obj.files[0]);

上传功能:

function upload(file){

        var fd = new FormData();
        fd.append("file", file);
        var xhr = new XMLHttpRequest();

        xhr.open('POST', 'upload.php', true);
        xhr.send(fd);

    }

这是PHP文件

$destination = 'test/';

if (isset($_FILES["file"]["name"])) {

    $name = $_FILES["file"]["name"];
    $tmp_name = $_FILES['file']['tmp_name'];
    $error = $_FILES['file']['error'];

    //echo $name;
    //echo $tmp_name;
    //echo $error;

    move_uploaded_file($_FILES['file']['tmp_name'], $destination.$name);

}

/////////////////////////////////////////////// ///////////////////////////

xhr POST没有大小限制,但PHP有大小限制^^

您可以在php.ini文件中使用变量“post_max_size”更改可以发送给PHP的最大数据

/////////////////////////////////////////////// ///////////////////////////