使用 input ,指定類型為 file ,來(lái)完成文件上傳功能。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、伊犁網(wǎng)站維護(hù)、網(wǎng)站推廣。
多文件上傳需要在標(biāo)簽上添加 mulyiple 屬性:
使用 accept 屬性來(lái)限制上傳文件的類型,當(dāng)然這么做任然是不可靠的,還需要后端做進(jìn)一步的判斷。
如果我們是用戶,當(dāng)我們上傳了一張圖片,卻只顯示了幾個(gè)文字,是不是很不爽,那我們?cè)趺磥?lái)實(shí)現(xiàn)預(yù)覽功能呢?
我們可以使用 FileReader 將圖像轉(zhuǎn)換為二進(jìn)制字符串,然后添加 load 事件監(jiān)聽,在文件上傳成功后獲取二進(jìn)制字符串。
顯示文件上冊(cè)進(jìn)度 來(lái)提高用戶體驗(yàn)
FileReader 還有一個(gè) progress 事件,表示當(dāng)前上傳進(jìn)度,配合HTML5的 progress 標(biāo)簽,我們來(lái)模擬一下文件的上傳進(jìn)度。
我們?cè)O(shè)計(jì)的上傳文件大約在500m左右
我第一反應(yīng)是blob,在HTML5中添加了blob類型用來(lái)定義前端較大數(shù)據(jù),之前使用過(guò)blob流傳輸視頻再使用html5中video標(biāo)簽讀取blob流,所以blob可以作為這種文件傳輸?shù)妮d體,那如何提交呢,使用可formdata提交blob數(shù)據(jù),這種方式可以承受較大數(shù)據(jù)量的文件,但在使用formdata傳輸?shù)倪^(guò)程中,瀏覽器會(huì)卡死,無(wú)法操作。
還是舍友提醒,可采用數(shù)據(jù)分割的方式,一部分一部分上傳。后經(jīng)百度得知,文件分割要防止數(shù)據(jù)丟失進(jìn)行大小校驗(yàn),以及防止外部入侵,進(jìn)行分段前端加密,后端校驗(yàn)。
百度發(fā)布了一款分割上傳的組件web upload,可包含文件分割,大小校驗(yàn)等功能。
網(wǎng)站為:
佩服我們大學(xué)宿舍的技術(shù)氛圍,出差回來(lái)的火車上跟大學(xué)舍友在微信上聊了兩三個(gè)小時(shí)的技術(shù),,,那天剛好是大學(xué)生開學(xué)那幾天,路上好多大學(xué)生,好懷念自己的大學(xué)生活,好懷念與大學(xué)舍友談天說(shuō)地或技術(shù)探討到深夜的日子
說(shuō)了幾個(gè)前端的問題,總結(jié)記錄一下吧
其中只有一個(gè)我會(huì)的,,,先說(shuō)這個(gè)問題,其他的我學(xué)習(xí)完再分享,留坑。。。。。。
,首先要判斷拖入的文件是否符合要求,包括圖片類型、大小等,然后獲取本地圖片信息,實(shí)現(xiàn)預(yù)覽,最后上傳。
$(function(){
...接上部分
var box = document.getElementById('drop_area'); //拖拽區(qū)域
box.addEventListener("drop",function(e){
e.preventDefault(); //取消默認(rèn)瀏覽器拖拽效果
var fileList = e.dataTransfer.files; //獲取文件對(duì)象
//檢測(cè)是否是拖拽文件到頁(yè)面的操作
if(fileList.length == 0){
return false;
}
//檢測(cè)文件是不是圖片
if(fileList[0].type.indexOf('image') === -1){
alert("您拖的不是圖片!");
return false;
}
//拖拉圖片到瀏覽器,可以實(shí)現(xiàn)預(yù)覽功能
var img = window.webkitURL.createObjectURL(fileList[0]);
var filename = fileList[0].name; //圖片名稱
var filesize = Math.floor((fileList[0].size)/1024);
if(filesize500){
alert("上傳大小不能超過(guò)500K.");
return false;
}
var str = "img src='"+img+"'p圖片名稱:"+filename+"/pp大?。?+filesize+"KB/p";
$("#preview").html(str);
//上傳
xhr = new XMLHttpRequest();
xhr.open("post", "upload.php", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
var fd = new FormData();
fd.append('mypic', fileList[0]);
xhr.send(fd);
},false);
});
播放大視頻文件等待下載時(shí)間過(guò)長(zhǎng)的缺陷,本身就不是HTML5的問題,服務(wù)器問題和視頻格式問題。
Flash插件播放fla的傳統(tǒng)方式上:這個(gè)現(xiàn)在YOUKU基本上FLV格式。建議在服務(wù)器上裝流媒體服務(wù),然后用HTML5點(diǎn)播地址,不要直接HTML5讀取視頻地址,沒人會(huì)這樣做除非只是非常小,非常短的的視頻文件。
相對(duì)于下載后觀看的網(wǎng)絡(luò)播放形式而言,流媒體的典型特征是把連續(xù)的音頻和視頻信息壓縮后放到網(wǎng)絡(luò)服務(wù)器上,用戶邊下載邊觀看,而不必等待整個(gè)文件下載完畢。由于流媒體技術(shù)的優(yōu)越性,該技術(shù)廣泛應(yīng)用于視頻點(diǎn)播、視頻會(huì)議、遠(yuǎn)程教育、遠(yuǎn)程醫(yī)療和在線直播系統(tǒng)中。
相關(guān)信息
sewise流媒體服務(wù)器軟件系統(tǒng)是一整套流媒體編碼、分發(fā)和存儲(chǔ)的軟件系統(tǒng),包含直播、點(diǎn)播、虛擬直播、剪切、轉(zhuǎn)碼、視頻管理系統(tǒng)。這些軟件支持多屏多系統(tǒng)播放,終端客戶使用手機(jī)、平板、電腦、電視等終端,ios、安卓、windows、linux等系統(tǒng),都能支持播放。
點(diǎn)播服務(wù)器軟件:支持mp4、flv、mov、ts、wmv、mkv、rmvb等多種類型的文件上傳;支持2種上傳方式,可上傳大文件;支持H.264/AAC編碼;強(qiáng)大的服務(wù)端實(shí)時(shí)轉(zhuǎn)碼能力,轉(zhuǎn)碼輸出3種不同碼率的視頻文件;支持web應(yīng)用播放需求及android系統(tǒng)、ios系統(tǒng)播放需求。
//代碼不支持IE 因?yàn)镮E對(duì)HTML5支持不好$("#file").change(function(event) { var file = $("#file")[0].files[0]; PostFile(file,0); });function PostFile(file,i){ var name = file.name, //文件名 size = file.size, //總大小shardSize = 2 * 1024 * 1024, shardSize = 2 * 1024 * 1024,//以2MB為一個(gè)分片 shardCount = Math.ceil(size / shardSize); //總片數(shù) if(i = shardCount){ return; } //計(jì)算每一片的起始與結(jié)束位置 var start = i * shardSize, end = Math.min(size, start + shardSize); //構(gòu)造一個(gè)表單,F(xiàn)ormData是HTML5新增的 var form = new FormData(); form.append("data", file.slice(start,end)); //slice方法用于切出文件的一部分 form.append("lastModified", file.lastModified); //slice方法用于切出文件的一部分 form.append("name", name); form.append("total", shardCount); //總片數(shù) form.append("index", i + 1); //當(dāng)前是第幾片 //Ajax提交 $.ajax({ url: "/test/AjaxFile", type: "POST", data: form, async: true, //異步 processData: false, //很重要,告訴jquery不要對(duì)form進(jìn)行處理 contentType: false, //很重要,指定為false才能形成正確的Content-Type success: function(data){ if(data){ i = data++; var num = Math.ceil(i*100 / shardCount); $("#output").text(num+'%'); PostFile(file,i); } } }); }
后端code
?php
class Upload{
private $filepath = './upload'; //上傳目錄
private $tmpPath; //PHP文件臨時(shí)目錄
private $blobNum; //第幾個(gè)文件塊
private $totalBlobNum; //文件塊總數(shù)
private $fileName; //文件名
private $md5FileName;
public function __construct($tmpPath,$blobNum,$totalBlobNum,$fileName, $md5FileName){
$this-tmpPath = $tmpPath;
$this-blobNum = $blobNum;
$this-totalBlobNum = $totalBlobNum;
$this-fileName = $this-createName($fileName, $md5FileName);
$this-moveFile();
$this-fileMerge();
}
當(dāng)前文章:html5上傳大文件,web上傳大文件
轉(zhuǎn)載來(lái)于:http://m.rwnh.cn/article26/phpgjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、響應(yīng)式網(wǎng)站、定制網(wǎng)站、App開發(fā)、網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)