首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不带表单的文件上传

不带表单的文件上传
EN

Stack Overflow用户
提问于 2013-10-27 20:25:35
回答 3查看 157.7K关注 0票数 108

在不使用任何形式的情况下,我是否可以使用POST方法使用jQuery将一个或多个文件从<input type="file">发送到'upload.php‘。输入标记不在任何表单标记内。它是单独存在的。所以我不想使用像'ajaxForm‘或者'ajaxSubmit’这样的jQuery插件。

EN

回答 3

Stack Overflow用户

发布于 2015-01-29 18:45:16

这里的所有答案仍然使用FormData API。这就像没有表单的"multipart/form-data"上传。您还可以使用xmlHttpRequest将文件作为POST请求主体中的内容直接上传,如下所示:

代码语言:javascript
复制
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-TypeContent-Disposition报头用于解释我们发送的内容(mime类型和文件名)。

我也在here上发布了类似的答案。

票数 40
EN

Stack Overflow用户

发布于 2014-10-26 04:20:42

基于this tutorial,这里有一个非常基本的方法:

代码语言:javascript
复制
$('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){
            ...
        }
        ...
    }); 
});

不要忘记添加适当的错误处理

票数 14
EN

Stack Overflow用户

发布于 2014-04-13 09:49:56

试试这个puglin simpleUpload,不需要表单

Html:

代码语言:javascript
复制
<input type="file" name="arquivo" id="simpleUpload" multiple >
<button type="button" id="enviar">Enviar</button>

Javascript:

代码语言:javascript
复制
$('#simpleUpload').simpleUpload({
  url: 'upload.php',
  trigger: '#enviar',
  success: function(data){
    alert('Envio com sucesso');

  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19617996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档