angular.js+node.js實現(xiàn)下載圖片處理詳解
前言
本文主要介紹的是angular.js+node.js實現(xiàn)下載圖片處理,下載有兩種方式,下面話不多說,來看看詳細(xì)的介紹吧。
第一種:
不指定完整路徑,然后發(fā)送get給server讓server自己去拼接路徑,然后用express的res.download來做下載:
Express:
var filePath = path.join(savePath, file[0].name);
console.log('Download file: ' + filePath);
res.download(filePath);
angular:
$http.get(url).success(function (data) {
var bin = new $window.Blob([data]);
deferred.resolve(data);
// Using file-saver library to handle saving work.
saveAs(bin, toFilename);
})
這種適合于server和用戶之間僅僅發(fā)送文件名,然后瀏覽器端構(gòu)造一個restapi 接口 比如/api/download/xxxxx.png,server自己去找到完整的路徑然后發(fā)送給用戶。
第二種方式:
是不寫server代碼,而是通過express的static靜態(tài)文件機(jī)制,來發(fā)送文件給用戶
Express:
app.use('/ocr/uploads', express.static('/data/ocr_img/dev', { maxAge: 86400000 }));
Angular:
$http.get(url, {responseType: 'arraybuffer'}).success(function (data) {
var bin = new Blob([data], { "type" : "image/png" });
deferred.resolve({status: '200'});
saveAs(bin, toFilename);
})
這種適合用戶知道server開啟靜態(tài)文件了,那么需要構(gòu)造完整的相對路徑, 比如當(dāng)前網(wǎng)頁的url是/orc, 那么,只要構(gòu)造url為uploads/xxx.png,那么express會有轉(zhuǎn)到/data/ocr_img/dev/xxx.png,把文件發(fā)送回來。
這里要注意:就是圖片發(fā)送回來的時候,server默認(rèn)是使用的text/plain方式,而圖片需要的是二進(jìn)制。因此設(shè)置{responseType: 'arraybuffer'} ,同時在收到blob數(shù)據(jù)的時候指定type為new Blob([data], { "type" : "image/png" } ,這種type也適用于其他圖片類型比如pdf jpg bmp tiff等。
圖片下載其實就是二進(jìn)制文件的下載了,具體參考MDN的一個權(quán)威文檔:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data
再擴(kuò)展就是這個文檔了:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Angular2中constructor和ngOninit的使用講解
這篇文章主要介紹了Angular2中constructor和ngOninit的使用講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
基于Angularjs-router動態(tài)改變Title值的問題
今天小編就為大家分享一篇基于Angularjs-router動態(tài)改變Title值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
AngularJS基礎(chǔ) ng-options 指令詳解
本文主要介紹AngularJS ng-options 指令,這里對ng-options指令的知識做了詳細(xì)整理,并附有詳細(xì)的代碼示例,有需要的小伙伴可以參考下2016-08-08
Angular6 Filter實現(xiàn)頁面搜索的示例代碼
這篇文章主要介紹了Angular6 Filter實現(xiàn)頁面搜索的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
用Angular實時獲取本地Localstorage數(shù)據(jù),實現(xiàn)一個模擬后臺數(shù)據(jù)登入的效果
這篇文章主要介紹了用ANGULAR實時獲取本地LOCALSTORAGE數(shù)據(jù),實現(xiàn)一個模擬后臺數(shù)據(jù)登入的效果的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-11-11
AngularJS使用指令增強標(biāo)準(zhǔn)表單元素功能
這篇文章主要介紹了AngularJS使用指令增強標(biāo)準(zhǔn)表單元素功能,包括數(shù)據(jù)綁定、建立模型屬性、驗證表單等,感興趣的小伙伴們可以參考一下2016-07-07
Angular中實現(xiàn)樹形結(jié)構(gòu)視圖實例代碼
近兩年當(dāng)中使用Angular開發(fā)過很多項目,其中也涉及到一些樹形結(jié)構(gòu)視圖的顯示,最近的在項目中封裝了大量的組件,一些組件也有樹形結(jié)構(gòu)的展示,所以寫出來總結(jié)一下。2017-05-05

