最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

圖片上傳之FileAPI與NodeJs

 更新時間:2017年01月24日 14:09:35   作者:leslie·Zhao  
本文主要介紹了使得我們處理圖片上傳更加簡單的方法FileAPI。具有很好的參考價值,下面跟著小編一起來看下吧

HTML5之fileAPI

HTML5之fileAPI使得我們處理圖片上傳更加簡單。

實例

html代碼

<div class="form-group">
  <label for="modal_inputFile" class="col-md-3 control-label label-font">位置圖:</label>
  <div class="col-md-9">
   <input type="text" readonly="" class="form-control" placeholder="點擊選擇文件">
   <input type="file" id="modal_inputFile">
   <img src="" class="img-responsive" id="modal-pre" alt="預覽區(qū)" style="max-height: 300px">
  </div>
</div>

效果:

這里我們可以通過$("#modal_inputFile")[0].files[0]來獲取到圖片的信息。

這里有name,size,type這幾個我們常用的屬性。

實現預覽

選擇好圖片后,我們都希望會有個預覽功能。這個html5也為我們想到了。

他提供了FileReader這個新的對象給我們。

FileReader該接口主要用來把文件讀入內存,并且讀取文件中的數據。

這樣我們就可以通過date url來實現預覽了。

var file = document.getElementById(modal_inputFile'').files[0];
 if (!file) {
 return false;
 }
 var reader = new FileReader();
 reader.readAsDataURL(file);
 reader.onload = function(e) {
 var ib_pre = document.getElementById('modal-pre');
 ib_pre.src = this.result;
}

這樣就實現了預覽。

我們再來查看下img的src。

<img src="data:image/png;base64,iVBORXXXXXXXXXXXXX....XXXXXXX" class="img-responsive" id="modal-pre" alt="預覽區(qū)" style="max-height: 300px">

src是base64編碼。

與后臺對接

既然前端使用文件API能滿足我們的需求,那我們接下來就需要上傳到服務端了。當仁不讓的就是NodeJs了。

前端請求

下面是前端發(fā)起請求的例子:

//圖片上傳
$('#preUpload').on('click', function(e) {
 var data = new FormData();
 var _files = $("#modal_inputFile")[0].files[0];
 var ect = ($("#modal_inputFile")[0].files[0]).name.split('.')[1];
 if(ect !== 'png'){
  alert('請上傳png圖片!')
  return;
 }
 data.append("modal_file", _files);
 $.ajax({
  type: 'post',
  dataType: 'json',
  url: window.stnt_hosts + 'thirdAdmanage/upload/modal',
  data: data,
  contentType: false,
  processData: false
 }).done(function(data, status) {
  console.log('上傳成功');
 }).fail(function(err) {
  console.log('上傳失敗');
 })
})

這里通過FormData來處理我們需要上傳的數據。

這里的data數據是一個序列過的對象。后臺接受就行了。

后端處理

服務端我們使用node-formidable來處理圖片的保存等操作。

見代碼:

var formidable = require("formidable");
var form = new formidable.IncomingForm();
//臨時目錄
form.uploadDir = './upload/';
//預覽圖片上傳
router.post('/upload/modal', function(req, res, next) {
 form.parse(req, function(err, fields, files) {
  if (files.modal_file) {
   rename(files.modal_file.path, files.modal_file.name, 'preview')
   res.send({
    stats:'success',
    data:[]
   })
  }
 })
});
function rename(old, _new, code, bId) {
 var path = './upload/' + code + '/';
  fs.exists(path, function(exists) {
   if (!exists) {
    fs.mkdir(path)
    console.log('創(chuàng)建文件夾!')
   }
   fs.renameSync(old, path + _new, function(err) {
    if (err) {
     console.log(err);
     return;
    }
    console.log('上傳成功!')
   })
  })
}

這里使用fs.renameSync的原因是,我們里面設置的臨時目錄form.uploadDir是存在于內存中的數據,并不是真正的圖片。

類似這樣

我們需要通過fs的方法,將文件重新保存到我們需要的地方即可。這時候就是圖片了。

最后

這里的form.parse(req, function(err, fields, files)中的fields與files到底是什么對象,一定要自己調試著看??赐昴憔兔靼资鞘裁戳?。

之前我不清楚的時候就是打開瀏覽器就搜索,結果可想而知很慘,幾乎全是錯的。

所以不清楚的話一定要去查github。

還有app.use(bodyParser.urlencoded({ extended: true }));的作用是用來解析我們通常的form表單提交的數據,也就是請求頭中包含這樣的信息: Content-Type: application/x-www-form-urlencoded

app.use(bodyParser.json())是用來解析json的。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • JS實現馬賽克圖片效果完整示例

    JS實現馬賽克圖片效果完整示例

    這篇文章主要介紹了JS實現馬賽克圖片效果,結合完整實例形式分析了JavaScript基于HTML5 canvas圖形元素繪制實現馬賽克效果相關操作技巧,需要的朋友可以參考下
    2019-04-04
  • js實現翻牌小游戲

    js實現翻牌小游戲

    這篇文章主要為大家詳細介紹了js實現翻牌小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • IE6下拉框圖層問題探討及解決

    IE6下拉框圖層問題探討及解決

    有關IE6下拉框圖層問題,一直困擾著大家,下面有個不錯的方法大家可以嘗試操作下
    2014-01-01
  • js簡單判斷flash是否加載完成的方法

    js簡單判斷flash是否加載完成的方法

    這篇文章主要介紹了js簡單判斷flash是否加載完成的方法,通過PercentLoaded方法對flash的加載進行判斷,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 由 element.appendChild(newNode) ,談開去

    由 element.appendChild(newNode) ,談開去

    由 element.appendChild(newNode) ,談開去...
    2006-11-11
  • 45個JavaScript編程注意事項、技巧大全

    45個JavaScript編程注意事項、技巧大全

    這篇文章主要介紹了45個JavaScript編程注意事項、技巧大全,在這篇文章里,我將分享一些JavaScript的技巧、秘訣和最佳實踐,除了少數幾個外,不管是瀏覽器的JavaScript引擎,還是服務器端JavaScript解釋器,均適用,需要的朋友可以參考下
    2015-02-02
  • JS面試必備之手寫instanceof,深拷貝,節(jié)流和防抖

    JS面試必備之手寫instanceof,深拷貝,節(jié)流和防抖

    JavaScript如何實現手寫instanceof、深拷貝、節(jié)流、防抖也是面試時常常考到的知識點,這篇文章為大家進行了詳細介紹,需要的可以參考一下
    2023-05-05
  • Bootstrap每天必學之面板

    Bootstrap每天必學之面板

    Bootstrap每天必學之面板,面板(Panels)是Bootstrap框架新增的一個組件,其主要作用就是用來處理一些其他組件無法完成的功能,對面板感興趣的小伙伴們可以參考一下
    2015-11-11
  • JS實現放大鏡效果

    JS實現放大鏡效果

    這篇文章主要為大家詳細介紹了JS實現放大鏡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JavaScript去除數組里重復值的方法

    JavaScript去除數組里重復值的方法

    這篇文章主要介紹了JavaScript去除數組里重復值的方法,涉及javascript針對數組操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

巴东县| 体育| 鄄城县| 阜城县| 永德县| 商河县| 嘉兴市| 桃园市| 马龙县| 揭阳市| 安义县| 黔江区| 吉水县| 德钦县| 大港区| 如皋市| 蒙城县| 武穴市| 达尔| 双峰县| 南溪县| 台北市| 文昌市| 肇东市| 开封市| 景宁| 瑞丽市| 贵港市| 加查县| 蓝田县| 郴州市| 吕梁市| 中卫市| 孟津县| 本溪| 云安县| 台湾省| 中牟县| 磴口县| 蒙自县| 屏东县|