我只想在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。 回到主题是否可以只发送原始数据?
答案 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的最大数据
/////////////////////////////////////////////// ///////////////////////////