在不使用任何形式的情况下,我是否可以使用POST方法使用jQuery将一个或多个文件从<input type="file">
发送到'upload.php‘。输入标记不在任何表单标记内。它是单独存在的。所以我不想使用像'ajaxForm‘或者'ajaxSubmit’这样的jQuery插件。
发布于 2015-01-29 18:45:16
这里的所有答案仍然使用FormData API。这就像没有表单的"multipart/form-data"
上传。您还可以使用xmlHttpRequest
将文件作为POST
请求主体中的内容直接上传,如下所示:
var xmlHttpRequest = new XMLHttpRequest();
var file = ...file handle...
var fileName = ...file name...
var target = ...target...
var mimeType = ...mime type...
xmlHttpRequest.open('POST', target, true);
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
xmlHttpRequest.send(file);
Content-Type
和Content-Disposition
报头用于解释我们发送的内容(mime类型和文件名)。
我也在here上发布了类似的答案。
发布于 2014-10-26 04:20:42
基于this tutorial,这里有一个非常基本的方法:
$('your_trigger_element_selector').on('click', function(){
var data = new FormData();
data.append('input_file_name', $('your_file_input_selector').prop('files')[0]);
// append other variables to data if you want: data.append('field_name_x', field_value_x);
$.ajax({
type: 'POST',
processData: false, // important
contentType: false, // important
data: data,
url: your_ajax_path,
dataType : 'json',
// in PHP you can call and process file in the same way as if it was submitted from a form:
// $_FILES['input_file_name']
success: function(jsonData){
...
}
...
});
});
不要忘记添加适当的错误处理
发布于 2014-04-13 09:49:56
试试这个puglin simpleUpload,不需要表单
Html:
<input type="file" name="arquivo" id="simpleUpload" multiple >
<button type="button" id="enviar">Enviar</button>
Javascript:
$('#simpleUpload').simpleUpload({
url: 'upload.php',
trigger: '#enviar',
success: function(data){
alert('Envio com sucesso');
}
});
https://stackoverflow.com/questions/19617996
复制相似问题