国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php中通過Ajax如何實現異步文件上傳的代碼實例

php中通過Ajax如何實現異步文件上傳的代碼實例

2019-11-24 14:58PHP教程網 PHP教程

php結合Ajax技術如何實現異步文件上傳 有了file filereader 對象的支持,異步文件上傳將變得簡單。(以前都會把form提交到iframe來實現)

1:取得file對象 
2:讀取2進制數據 
3:模擬http請求,把數據發送出去(這里通常比較麻煩) 
在forefox下使用 xmlhttprequest 對象的 sendasbinary 方法發送數據; 
4:完美實現 
遇到的問題 
目前僅有 firefox 可以正確上傳文件。(chrome也可以采google.gears上傳) 
對于從firefox和chrome下讀取到的文件數據好像不一樣(不知道是否是調試工具的原因) 
chrome以及其他高級瀏覽器沒有 sendasbinary 方法 只能使用 send 方法發送數據,有可能是上面的原因導致無法正確上傳。(經過測試普通文本文件可以正確上傳) 

復制代碼代碼如下:


<!doctype html > 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>html5 file and filereader</title> 
<link href="html/ui.css" _mce_href="html/ui.css" rel="stylesheet" /> 
</head> 
<body> 
<style type="text/css"><!-- 
.box{background:#f8f8f8;border:1px solid #ccc;padding:10px;-webkit-box-shadow:#000 0px 0px 4px;-moz-box-shadow:#000 0px 0px 4px; 
-webkit-border-radius:2px;font-family: 'segoe ui', calibri, 'myriad pro', myriad, 'trebuchet ms', helvetica, arial, sans-serif; 

.bl{ font-weight:700;} 
.dl{ padding:10px; border-top:1px dotted #999;} 
.dl dd{ padding:0; margin:0;} 
.log{border:1px solid #ccc; background:#f8f8f8; width:200px; position:absolute; right:10px; top:10px;} 
.log li{border:1p dotted #ccc;word-wrap:break-word;word-break:break-all; margin:0px; padding:0;} 
.log ul{margin:0px; padding:0; list-style:none;} 
--></style><style type="text/css" _mce_bogus="1"><!-- 
.box{background:#f8f8f8;border:1px solid #ccc;padding:10px;-webkit-box-shadow:#000 0px 0px 4px;-moz-box-shadow:#000 0px 0px 4px; 
-webkit-border-radius:2px;font-family: 'segoe ui', calibri, 'myriad pro', myriad, 'trebuchet ms', helvetica, arial, sans-serif; 

.bl{ font-weight:700;} 
.dl{ padding:10px; border-top:1px dotted #999;} 
.dl dd{ padding:0; margin:0;} 
.log{border:1px solid #ccc; background:#f8f8f8; width:200px; position:absolute; right:10px; top:10px;} 
.log li{border:1p dotted #ccc;word-wrap:break-word;word-break:break-all; margin:0px; padding:0;} 
.log ul{margin:0px; padding:0; list-style:none;} 
--></style> 
<div class="box" id="baseinfo"> 
<h2>(把圖片拖拽到這里)利用 filereader 獲取文件 base64 編碼</h2> 
<div></div> 
</div> 
<div class="log"> 
<ul id="log"> 
</ul> 
</div> 
<script type="text/CSS" ><!-- 
(function(){ 
window.datavalue = 0; 
var html = ' <dl class="dl"> 
<dd>filename: $filename$</dd> 
<dd>filetype: $filetype$</dd> 
<dd>filesize: $filesize$</dd> 
<dd><img src="$data$" /></dd> 
<dd>filebase64: <br/> 
<div style="width:100%; height:100px;">$filebase64$</div> 
</dd> 
</dl> 

var log = function(msg){ 
//console['log'](msg); 
document.getelementbyid('log').innerhtml += '<li>'+ msg +'</li>'; 

var dp = function(){ 
var defconfig = { 
dropwrap : window 

this.init.apply(this, [defconfig]); 
this.file = null; 

dp.prototype = { 
init:function(args){ 
var dropwrap = args.dropwrap; 
var _this = this; 
dropwrap.addeventlistener("dragenter", this._dragenter, false); 
dropwrap.addeventlistener("dragover", this._dragover, false); 
dropwrap.addeventlistener('drop', function(e){_this.readfile.call(_this,e)} , false); 
log('window drop bind--ok'); 
}, 
_dragenter:function(e){e.stoppropagation();e.preventdefault();}, 
_dragover:function(e){e.stoppropagation();e.preventdefault();}, 
readfile:function(e){ 
e.stoppropagation(); 
e.preventdefault(); 
var dt = e.datatransfer; 
var files = dt.files; 
for(var i = 0; i< files.length;i++){ 
var html = html.slice(); 
html = this.writeheader(files[i], html); 
this.read(files[i], html); 

}, 
read:function(file, h){ 
var type = file.type; 
var reader = new filereader(); 
reader.onprogress = function(e){ 
if (e.lengthcomputable){ 
log('progress: ' + math.ceil(100*e.loaded/file.size) +'%') 

}; 
reader.onloadstart = function(e){ 
log('onloadstart: ok'); 
}; 
reader.onloadend = function(e){ 
var _result = e.target.result; 
//console['log'](e.target); 
log('data uri--ok'); 
var d = document.createelement('div'); 
h = h.replace('$filebase64$', _result); 
if(/image/.test(file.type)){ 
h = h.replace('$data$',_result); 

d.innerhtml = h; 
document.getelementbyid('baseinfo').appendchild(d); 
}; 
reader.readasdataurl(file); // www.3ppt.com base 64 編碼 
return; 
}, 
writeheader:function(file, h){ 
log(file.filename + '+' + (file.size/1024)); 
return h.replace('$filename$', file.filename).replace("$filesize$",(file.size/1024)+'kb').replace("$filetype$",file.type); 


new dp(); 
})() 
// --></script> 
</body> 
</html> 
filereader對象 
var filereader = new filereader(); 
filereader.onloadend = function(){ 
console.log(this.readystate); // 這個時候 應該是 2 
console.log(this.result); 讀取完成回調函數,數據保存在result中 

filereader.readasbinarystring(file);// 開始讀取2進制數據 異步 參數為file 對象 
//filereader.readasdataurl(file); // 讀取base64 
//filereader.readastext(file);//讀取文本信息 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本一区二区视频 | 亚洲精品久久久一区二区三区 | 国产一区二区日韩 | 一级大毛片 | 极品一区 | 高清hd写真福利在线播放 | 久热免费在线观看 | 在线观看五码 | 欧美aⅴ | 成人3d动漫一区二区三区91 | 亚洲社区在线 | 青青草成人在线 | 乳首在线 | 国产一区中文字幕 | 黄色地址 | 蜜桃视频一区 | 亚洲另类视频 | 亚洲国产成人av好男人在线观看 | 国产精品久久久久久一区 | 一区二区视频在线观看 | 午夜看片| 久久久久久久久久久美女 | 狠狠操夜夜操 | 午夜视频网站 | 日本女人高潮视频 | 欧美精产国品一二三区 | 午夜精品电影 | 性欧美另类| 欧美激情视频一区二区三区在线播放 | 国产精品久久久久久久久久久久 | 一本色道久久综合狠狠躁的推荐 | 免费啪啪网站 | 91午夜伦伦电影理论片 | 亚洲欧美视频在线观看 | 亚洲精品二区 | 在线永久免费观看黄网站 | 午夜寂寞少妇aaa片毛片 | 国产成人精品免费视频大全最热 | 日本视频网| 伊人激情影院 | 免费一区|