jQuery Ajax上傳文件

二級(jí)標(biāo)題

FormData 對(duì)象的使用
第一種方式,html如下:

<form id="uploadForm" enctype="multipart/form-data">
    <input id="file" type="file" name="file"/>
    <button id="upload" type="button">upload</button>
</form>

javascript代碼

$.ajax({
    url: '/upload',
    type: 'POST',
    cache: false,
    data: new FormData($('#uploadForm')[0]),
    processData: false,
    contentType: false
}).done(function(res) {
}).fail(function(res) {});

這里要注意幾點(diǎn):

  • processData設(shè)置為false。因?yàn)閐ata值是FormData對(duì)象,不需要對(duì)數(shù)據(jù)做處理。
  • <form>標(biāo)簽添加enctype="multipart/form-data"屬性。
  • cache設(shè)置為false,上傳文件不需要緩存。
  • contentType設(shè)置為false。因?yàn)槭怯?lt;form>表單構(gòu)造的FormData對(duì)象,且已經(jīng)聲明了屬性
    enctype="multipart/form-data",所以這里設(shè)置為false。

使用FormData對(duì)象添加字段方式上傳文件

html如下

<div id="uploadForm">
    <input id="file" type="file"/>
    <button id="upload" type="button">upload</button>
</div>

這里沒(méi)有<form>標(biāo)簽,也沒(méi)有enctype="multipart/form-data"屬性。

var formData = new FormData();
formData.append('file', $('#file')[0].files[0]);
$.ajax({
    url: '/upload',
    type: 'POST',
    cache: false,
    data: formData,
    processData: false,
    contentType: false
}).done(function(res) {
}).fail(function(res) {});

有幾處需要注意的地方

  • append()的第二個(gè)參數(shù)應(yīng)是文件對(duì)象,即$('#file')[0].files[0]。
  • contentType也要設(shè)置為‘false’。

從代碼$('#file')[0].files[0]中可以看到一個(gè)<input type="file">標(biāo)簽?zāi)軌蛏蟼鞫鄠€(gè)文件,
只需要在<input type="file">里添加multiple或multiple="multiple"屬性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • FormData對(duì)象,是可以使用一系列的鍵值對(duì)來(lái)模擬一個(gè)完整的表單,然后使用XMLHttpRequest發(fā)送這個(gè)"...
    Agreal閱讀 190,649評(píng)論 49 149
  • 模擬前臺(tái)html頁(yè)面 1.jQuery插件AjaxFileUpload用來(lái)實(shí)現(xiàn)ajax文件上傳 2.通過(guò)jQuer...
    胡自鮮閱讀 1,006評(píng)論 0 3
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • 實(shí)現(xiàn)文件的上傳主要有兩種方式: 使用form表單提交上傳 html代碼如下: 此時(shí)的JavaScript代碼如下:...
    小m_up閱讀 912評(píng)論 0 1
  • 前端無(wú)法像原生APP一樣直接操作本地文件,否則的話打開(kāi)個(gè)網(wǎng)頁(yè)就能把用戶電腦上的文件偷光了,所以需要通過(guò)用戶觸發(fā),用...
    雷波_viho閱讀 883評(píng)論 0 1

友情鏈接更多精彩內(nèi)容