中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

如何在移動web上上傳文件..
來源:易賢網 閱讀:3187 次 日期:2015-04-03 11:03:18
溫馨提示:易賢網小編為您整理了“如何在移動web上上傳文件..”,方便廣大網友查閱!

xmlhttprequest2.0 可以支持文件上傳.這東東很方便,但是在實際使用中碰到了一些問題.這里記錄下.

正常情況下我們是這樣生成2進制文件的.

//data為文件的base64編碼

function dataURLtoBlob(data) {

var tmp = data.split(',');

tmp[1] = tmp[1].replace(/s/g,'');

var binary = atob(tmp[1]);

var array = [];

for(var i = 0; i < binary.length; i++) {

array.push(binary.charCodeAt(i));

}

return new Blob([new Uint8Array(array)], {type: 'image/jpeg'});

}

但是在android手機上可能會由于沒有blob對象導致無法生成blob.怎么辦捏.可以使用以下代碼:

function newBlob(data, datatype){

var out;

try {

out = new Blob([data], {type: datatype});

//一切正常,直接使用blob.

} catch (e) {

window.BlobBuilder = window.BlobBuilder ||

window.WebKitBlobBuilder ||

window.MozBlobBuilder ||

window.MSBlobBuilder;

if (e.name == 'TypeError' && window.BlobBuilder) {

var bb = new BlobBuilder();

bb.append(data.buffer);

out = bb.getBlob(datatype);

//還可以搶救一下..使用blobbuilder來生成文件..

} else {

//沒救了,放棄治療.

}

}

return out;

}

ok.現在文件已經ready了.

我們創建一個formadata

var file = dataURLtoBlob(img);

fd.append('img',file);

愉快的上傳….然后…然后…沒有然后了…抓包看下.

------WebKitFormBoundarysToAVAYMLPFfJF96

Content-Disposition: form-data; name="img"; filename="blob"

Content-Type: application/octet-stream

------WebKitFormBoundarysToAVAYMLPFfJF96--

文件的內容呢…

好吧..既然沒法愉快用formdata..那么就自己動手生成一個post的包體吧…下面是相關的代碼..

function FormDataShim () {

var o = this,

parts = [],// Data to be sent

boundary = Array(5).join('-') + (+new Date() * (1e16*Math.random())).toString(32),

oldSend = XMLHttpRequest.prototype.send;

this.append = function (name, value, filename) {

parts.push('--' + boundary + 'rnContent-Disposition: form-data; name="' + name + '"');

if (value instanceof Blob) {

parts.push('; filename="'+ (filename || 'blob') +'"rnContent-Type: ' + value.type + 'rnrn');

parts.push(value);

} else {

parts.push('rnrn' + value);

}

parts.push('rn');

};

//把xhr的send方法重寫一下.

XMLHttpRequest.prototype.send = function (val) {

var fr,

data,

oXHR = this;

if (val === o) {

// 最后加一下boundary..注意這里一定要在最后加rn..否則服務器有可能會解析參數失敗..

parts.push('--' + boundary + '--rn');

data = new XBlob(parts);

fr = new FileReader();

fr.onload = function () { oldSend.call(oXHR, fr.result); };

fr.onerror = function (err) { throw err; };

fr.readAsArrayBuffer(data);

// 設置content-type

this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);

XMLHttpRequest.prototype.send = oldSend;

}

else {

oldSend.call(this, val);

}

};

}

最后完整的代碼長這樣.

function newBlob(data, datatype){

var out;

try {

out = new Blob([data], {type: datatype});

}

catch (e) {

window.BlobBuilder = window.BlobBuilder ||

window.WebKitBlobBuilder ||

window.MozBlobBuilder ||

window.MSBlobBuilder;

if (e.name == 'TypeError' && window.BlobBuilder) {

var bb = new BlobBuilder();

bb.append(data.buffer);

out = bb.getBlob(datatype);

}

else if (e.name == "InvalidStateError") {

out = new Blob([data], {type: datatype});

}

else {

}

}

return out;

}

// 判斷是否需要blobbuilder

var needsFormDataShim = (function () {

var bCheck = ~navigator.userAgent.indexOf('Android')

&& ~navigator.vendor.indexOf('Google')

&& !~navigator.userAgent.indexOf('Chrome');

return bCheck && navigator.userAgent.match(/AppleWebKit/(d+)/).pop() <= 534;

})(),

blobConstruct = !!(function () {

try { return new Blob(); } catch (e) {}

})(),

XBlob = blobConstruct ? window.Blob : function (parts, opts) {

var bb = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder);

parts.forEach(function (p) {

bb.append(p);

});

return bb.getBlob(opts ? opts.type : undefined);

};

function FormDataShim () {

// Store a reference to this

var o = this,

parts = [],// Data to be sent

boundary = Array(5).join('-') + (+new Date() * (1e16*Math.random())).toString(32),

oldSend = XMLHttpRequest.prototype.send;

this.append = function (name, value, filename) {

parts.push('--' + boundary + 'rnContent-Disposition: form-data; name="' + name + '"');

if (value instanceof Blob) {

parts.push('; filename="'+ (filename || 'blob') +'"rnContent-Type: ' + value.type + 'rnrn');

parts.push(value);

} else {

parts.push('rnrn' + value);

}

parts.push('rn');

};

// Override XHR send()

XMLHttpRequest.prototype.send = function (val) {

var fr,

data,

oXHR = this;

if (val === o) {

//注意不能漏最后的rn ,否則有可能服務器解析不到參數.

parts.push('--' + boundary + '--rn');

data = new XBlob(parts);

fr = new FileReader();

fr.onload = function () { oldSend.call(oXHR, fr.result); };

fr.onerror = function (err) { throw err; };

fr.readAsArrayBuffer(data);

this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);

XMLHttpRequest.prototype.send = oldSend;

}

else {

oldSend.call(this, val);

}

};

}

//把圖片轉成formdata 可以使用的數據...

//這里要把s替換掉..要不然atob的時候會出錯....

function dataURLtoBlob(data) {

var tmp = data.split(',');

tmp[1] = tmp[1].replace(/s/g,'');

var binary = atob(tmp[1]);

var array = [];

for(var i = 0; i < binary.length; i++) {

array.push(binary.charCodeAt(i));

}

return new newBlob(new Uint8Array(array), 'image/jpeg');

}

function uploadFile(img){

var fd = needsFormDataShim ? new FormDataShim() : new FormData();

var file = dataURLtoBlob(img);

fd.append('img',file);

var prog = function(e){

/*你的邏輯*/

}

var load = function(e){

/*你的邏輯*/

}

var error = function(e){

/*你的邏輯*/

}

var abort = function(e){

/*你的邏輯*/

}

var xhr = new XMLHttpRequest();

xhr.upload.addEventListener('progress',prog,false);

xhr.addEventListener('load',load,false);

xhr.addEventListener('error',error,false);

xhr.addEventListener('abort',abort,false);

xhr.onreadystatechange = function(){

/*你的邏輯*/

}

xhr.open('POST','/upload',true);

xhr.send(fd);

}

更多信息請查看IT技術專欄

更多信息請查看技術文章
易賢網手機網站地址:如何在移動web上上傳文件..
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美护士18xxxxhd| 亚洲日本一区二区三区| 亚洲专区在线视频| 亚洲另类春色国产| 日韩一区二区高清| 亚洲理论在线| 欧美在线观看www| 亚洲深夜福利视频| 久久精品国产99精品国产亚洲性色| 99riav国产精品| 欧美精品一区二区三区蜜臀| 国产亚洲福利一区| 亚洲精选视频免费看| 欧美一区午夜精品| 欧美精品福利视频| 激情欧美一区| 性欧美18~19sex高清播放| 免费亚洲视频| 狠狠噜噜久久| 久久国产精品99国产| 欧美日韩亚洲国产精品| 精品9999| 免费日韩成人| 国产欧美精品一区二区三区介绍| 99在线观看免费视频精品观看| 久久久久久久一区二区| 国产欧美精品在线| 久久精品国产综合| 一区二区三区在线高清| 久久这里只有| 亚洲成人直播| 久久精品视频免费| 国产精品日韩欧美综合| 久久精品国产一区二区三区| 国产精品在线看| 午夜精品久久久久| 亚洲黄一区二区| 国产精品二区二区三区| 久久成年人视频| 韩国女主播一区二区三区| 欧美jizzhd精品欧美喷水| 一本在线高清不卡dvd| 国产欧美一区二区三区在线老狼 | 一区二区三区四区五区视频| 欧美久久九九| 久久久高清一区二区三区| 亚洲精品五月天| 国产精品影音先锋| 欧美xxx成人| 一道本一区二区| 亚洲中午字幕| 亚洲欧美日韩另类精品一区二区三区| 国产精品毛片大码女人| 欧美先锋影音| 国产欧美日韩视频| 亚洲成色777777女色窝| 国产亚洲欧美一区在线观看 | 亚洲午夜视频在线观看| 国产有码一区二区| 美女网站久久| 亚洲亚洲精品在线观看| 国产一区二区观看| 在线日韩欧美视频| 欧美成人午夜| 欧美日韩一二区| 激情亚洲网站| 久久久免费精品| 欧美在线亚洲在线| 免费在线观看日韩欧美| 久久阴道视频| 国产精品电影网站| 国产日韩成人精品| 在线成人www免费观看视频| 亚洲欧洲日本专区| 午夜精品成人在线| 蜜臀99久久精品久久久久久软件| 久久综合电影一区| 国产人久久人人人人爽| 亚洲国产中文字幕在线观看| 樱桃国产成人精品视频| 国产亚洲精品aa午夜观看| 99精品视频一区| 欧美aaaaaaaa牛牛影院| 国产午夜一区二区三区| 亚洲视频在线一区| 麻豆91精品91久久久的内涵| 国产精品你懂的在线欣赏| 亚洲电影中文字幕| 夜夜嗨av一区二区三区四季av| 久久天天狠狠| 国产欧美日韩另类一区| 在线视频你懂得一区| 欧美激情一区二区三区蜜桃视频 | 国产伦精品一区二区| 99精品热视频只有精品10| 欧美日本韩国| 欧美亚洲视频一区二区| 亚洲国产成人tv| 欧美视频在线一区二区三区| 亚洲美女淫视频| 国产一区二区三区高清播放| 欧美高清视频一二三区| 国内精品久久久久久| 欧美在线你懂的| 国产精品一区视频| 久久国产日韩欧美| 国产视频综合在线| 亚洲午夜成aⅴ人片| 欧美激情第8页| 亚洲夜晚福利在线观看| 国产精品久久久久久久久果冻传媒| 一本色道久久综合精品竹菊 | 久久久久久久尹人综合网亚洲| 韩国三级电影久久久久久| 久久欧美中文字幕| 99re热这里只有精品免费视频| 国产精品日韩精品欧美在线| 久久亚洲春色中文字幕久久久| 最新成人在线| 国产一区91精品张津瑜| 欧美激情久久久久| 久久精品一区二区三区四区| 亚洲韩国一区二区三区| 国产亚洲a∨片在线观看| 农村妇女精品| 久久久999| 亚洲欧美影院| 亚洲视频视频在线| 亚洲精品久久久久久久久久久久 | 国产日产亚洲精品系列| 欧美大片一区| 欧美精品激情| 麻豆91精品91久久久的内涵| 99这里只有久久精品视频| 亚洲精品国产欧美| 亚洲国产美女| 亚洲精品欧美一区二区三区| 尤物yw午夜国产精品视频明星| 国产在线拍偷自揄拍精品| 国产精品视频xxx| 国产精品私房写真福利视频| 国产精品一区一区| 国产一区二区精品在线观看| 国产日韩欧美一区在线| 狠狠色丁香婷婷综合影院| 一区二区三区无毛| 一区二区欧美在线观看| 午夜欧美大尺度福利影院在线看| 亚洲一区免费看| 久久综合色8888| 欧美日韩一区二区三区在线| 国产精品入口夜色视频大尺度| 国产精品免费观看在线| 国模吧视频一区| 香蕉成人啪国产精品视频综合网| 亚洲系列中文字幕| 久久综合中文字幕| 欧美午夜理伦三级在线观看| 国产欧美一区二区三区另类精品| 激情亚洲一区二区三区四区| 亚洲亚洲精品在线观看 | 欧美日韩国产精品专区 | 亚洲精品乱码久久久久久按摩观 | 欧美一区二区三区四区在线| 麻豆91精品| 在线精品福利| 久久久久久国产精品mv| 欧美视频国产精品| 亚洲国产女人aaa毛片在线| 欧美亚洲一区三区| 国产精品日韩一区| 午夜日韩在线| 国内成人精品视频| 久久精品中文字幕免费mv| 国产精品永久| 久久久av毛片精品| 1024成人| 欧美图区在线视频| 午夜精品久久久久久久| 国产日韩欧美二区| 久久不射网站| 91久久精品www人人做人人爽| 欧美高清自拍一区| 亚洲午夜在线视频| 国内精品视频在线观看| 久久视频在线看| 一区二区三区国产| 国产欧美日韩在线播放| 欧美大片一区二区| 亚洲欧美国产va在线影院| 国内精品视频久久| 欧美日韩国产色综合一二三四| 亚洲欧美高清| 亚洲精品综合久久中文字幕| 国产伦精品一区二区三区照片91 | 国产精品v日韩精品| 久久久亚洲国产天美传媒修理工| 亚洲另类在线一区| 激情国产一区二区| 国产亚洲一区二区三区在线观看|