亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

2024-05-06 16:26:04
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Express實現前端后端通信上傳圖片存儲數據庫(mysql)傻瓜式教程(一),需要的朋友可以參考下
 

在前端這個坑里摸爬滾打已經一年多了,終于下定決心寫下自己第一篇博客(雖然內容原創居少,算是個整合內容),開始使用express的原因是因為自己想測試接收下前端上傳圖片并返回,實現圖片上傳。后端各位大大們又都比較忙,沒辦法了,只能自己上了(哎,都是逼出來的)。

  此教程適合沒有接觸過node的web前端開發,快速構建自己的框架,基于express4.x。

  首先安裝express ,http://www.expressjs.com.cn/starter/installing.html,安裝過程中一直回車到底就ok了。

  安裝完成后,繼續安裝express的應用骨架,生成默認項目

$ npm install express-generator -g 

  (-g表示全局安裝,下次可以直接使用,不用再次安裝)

  接著在myapp文件夾下直接運行express,項目目錄就直接生成了 

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

    然后安裝所有依賴包:

$ npm install 

  啟動這個應用(MacOS 或 Linux 平臺):

$ DEBUG=myapp npm start 

  Windows 平臺使用如下命令:

> set DEBUG=myapp & npm start 

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

   看到這個頁面時,大家已經完成了基礎的項目構建,繼續往上添加自己的代碼就可以了。(到這部后大家可以把public目錄下的文件夾修改為自己喜歡的格式,例如:js,css,只是一個路徑而已)

   接下來大家就可以把自己的頁面添加到項目里面了,不過express到目前我只發現可以加載jade模板和ejs。大家不用擔心還要從新學習jade,這里http://www.html2jade.org/,可以直接用工具把html轉化為jade模板,可以讓你手中已有的項目直接添加進去,jade模板在express的加載方法:http://www.expressjs.com.cn/guide/using-template-engines.html。其實jade的寫法真的很簡單,大家看一下api基本就能上手了,學習地址點這里。(項目里已經集成了jade,不用重復安裝)

    現在大家打開核心的app.js

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

這幾行定義的是express的路由,大家可以簡單了解下路由的作用,http://www.expressjs.com.cn/guide/routing.html,這點非常重要,一定要理解,不是很難,應該能夠很快理解。

   比如現在你打開http://localhost:3000/users頁面,對應user.js里面的代碼一看就能理解。(打開這個頁面時發生了get請求)

   下面咱們先不急著上傳圖片,先測試下前端發送的post和get請求。 

   以post請求為例,咱們把layout.jade修改成下面的樣子

doctype htmlhtml head link(rel='stylesheet', href='/css/style.css') script(type="text/javascript", src="/js/jquery.js") script(type="text/javascript", src="/js/index.js") body block content 

  在public/js下新建個index.js,加載jquery(只是為了簡寫的ajax)有人可能會問為什么會沒有public路徑,因為Express 內置的 express.static 可以方便地托管靜態文件,例如圖片、CSS、JavaScript 文件等,詳細內容點這里,對應app.js的內容為 app.use(express.static(path.join(__dirname, 'public')));

只有這樣才能讀取到文件。

  下面開始修改js代碼,public/js/index.js內寫個最基礎的ajax請求就好了,這里發送請求的路徑為"/",就是往主頁發送請求(路由一定要理解,路由一定要理解,路由一定要理解!?。?/p>

$(document).ready(function() { $.post('/', {num: '12345678'}, function(data) {   console.log(data)  });}) 

   然后在routes/index.js里面修改

var express = require('express');var router = express.Router();/* GET home page. */router.get('/', function(req, res, next) { res.render('index', { title: 'Express' });});router.post('/', function(req, res) {  res.send(req.body.num);});module.exports = router; 

  在此監聽首頁的post請求,req.body.num表示發送過來的數據,大家可以直接打印下req,看看里面包含了什么內容,加深理解(修改完文件后記得重啟express)。

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

  這時候在控制臺中就可以看到返回的數據了。

  現在大家已經可以使用node接收前端發送的請求了(是不是灰長開心!?。?,下面進行我們的重頭戲,上傳圖片。

  因為是測試接口,公司的項目要兼容低版本瀏覽器,所有plupload.js就上場了(不是我不想用h5的方法)。官網,下載后如圖,就夠用了。(記得在layout.jade里面加載)

Express實現前端后端通信上傳圖片之存儲數據庫(mysql)傻瓜式教程(一)

  把index.js修改成下面的樣子,這是個標準的官網上傳事例,不理解的在官網看下api,很好理解(其實看變量名字也都能理解~)

$(document).ready(function() { var uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4', browse_button: 'pickfiles', // you can pass an id... container: document.getElementById('container'), // ... or DOM Element itself url: '/', flash_swf_url: '../js/Moxie.swf', silverlight_xap_url: '../js/Moxie.xap', filters: { max_file_size: '10mb', mime_types: [{ title: "Image files", extensions: "jpg,gif,png" }, { title: "Zip files", extensions: "zip" }] }, init: { PostInit: function() { document.getElementById('filelist').innerHTML = ''; document.getElementById('uploadfiles').onclick = function() { uploader.start(); return false; }; }, FilesAdded: function(up, files) { plupload.each(files, function(file) { document.getElementById('filelist').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>'; }); }, UploadProgress: function(up, file) { document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>"; }, Error: function(up, err) { document.getElementById('console').appendChild(document.createTextNode("/nError #" + err.code + ": " + err.message)); }, FileUploaded: function(up, file, info) { // Called when file has finished uploading  $("body").append($(info.response))  }, UploadComplete: function(up, file) { } } }); uploader.init();}) 

  index.jade修改成下面的樣子,主要是添加上傳點擊的元素,添加了兩個按鈕而已(不要嫌棄它確實是比較丑--)

extends layoutblock content h1= title p Welcome to #{title} #filelist #container a#pickfiles select files a#uploadfiles upload files 

  這里我們要用到的外部模塊是Felix Geisendörfer開發的node-formidable模塊。它對解析上傳的文件數據做了很好的抽象。 其實說白了,處理文件上傳“就是”處理POST數據 —— 但是,麻煩的是在具體的處理細節,所以,這里采用現成的方案更合適點?! ?/p>

  安裝formidable模塊。

npm install formidable 

  修改routes/index.js

var express = require('express');var router = express.Router();var fs = require('fs');var formidable = require("formidable");/* GET home page. */router.get('/', function(req, res) { res.render('index', { title: '孟星魂' });});router.post('/', function(req, res) { var form = new formidable.IncomingForm(); form.uploadDir = "./public/upload/temp/"; //改變臨時目錄 form.parse(req, function(error, fields, files) { for (var key in files) { var file = files[key]; var fName = (new Date()).getTime(); switch (file.type) { case "image/jpeg": fName = fName + ".jpg"; break; case "image/png": fName = fName + ".png"; break; default: fName = fName + ".png"; break; } console.log(file, file.size); var uploadDir = "./public/upload/" + fName; fs.rename(file.path, uploadDir, function(err) { if (err) { res.write(err + "/n"); res.end(); } //res.write("upload image:<br/>"); res.write("<img src='/upload/" + fName + "' />"); res.end(); }) } });});

module.exports = router;

   此時需要在public下手動新建文件夾upload以及下面的temp文件夾。

   先把文件上傳到臨時文件夾,再通過fs重命名移動到指定的目錄即可。

  fs.rename即重命名,但是fs.rename不能夸磁盤移動文件,所以我們需要指定上傳的臨時目錄要和最終目錄在同一磁盤下。

  res.write就是往前端返回的數據,這里我直接返回一個img標簽,并添加上傳文件的路徑,前端只要把標簽append到頁面中就ok了。

  完成前端圖片上傳功能!!

  今天進行到這里,明天進行講解node連接數據庫的操作。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线播放视频| 日韩av电影中文字幕| 8090成年在线看片午夜| 久久精品这里热有精品| 日韩精品在线第一页| 欧美性色xo影院| 国产亚洲成精品久久| 欧美日韩美女在线| 久久中文字幕一区| 欧美乱大交xxxxx另类电影| 色琪琪综合男人的天堂aⅴ视频| 国产xxx69麻豆国语对白| 欧美裸身视频免费观看| 亚洲精品98久久久久久中文字幕| 亚洲国产精品999| 亚洲精品大尺度| 国产69久久精品成人| 亚洲人精品午夜在线观看| 久久影院资源网| 日韩av一卡二卡| 精品国产一区二区三区在线观看| 久久成人一区二区| 亚洲人成网站999久久久综合| 欧美做爰性生交视频| 亚洲精选在线观看| 俺去了亚洲欧美日韩| 色老头一区二区三区在线观看| 欧美日韩成人在线观看| 亚洲精品视频在线观看视频| 亚洲最大成人网色| 国产精品美女无圣光视频| 国产精品国产三级国产aⅴ浪潮| 日韩av在线一区| 亚洲精品国产精品国自产在线| 久久精品视频一| 亚洲韩国欧洲国产日产av| 久久久精品2019中文字幕神马| 亚洲国产欧美一区二区三区同亚洲| 欧美亚洲激情视频| 国产精品福利网站| 中文字幕免费国产精品| 亚洲天天在线日亚洲洲精| 日韩av片永久免费网站| 国产在线播放不卡| 日本高清久久天堂| 欧美有码在线观看| 国语自产精品视频在线看抢先版图片| 欧美日韩国产成人在线观看| 国产精品永久在线| 国产精品视频999| 色婷婷**av毛片一区| 久热精品在线视频| 亚洲人成网站免费播放| 日韩免费在线观看视频| 国产精品久久久久久中文字| 日韩精品欧美国产精品忘忧草| 国产精品自产拍在线观看中文| 亚洲国产欧美一区二区丝袜黑人| 亚洲人成在线观| 国产精国产精品| 久久综合电影一区| 福利视频第一区| 欧美日韩亚洲视频一区| 亚洲欧美国产高清va在线播| 视频在线观看一区二区| 国产中文字幕亚洲| 精品视频一区在线视频| 欧美精品久久久久久久免费观看| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩激情视频| 国产精品∨欧美精品v日韩精品| 九九精品视频在线观看| 久久久久久久一区二区三区| 国产suv精品一区二区| 久久免费视频在线| 69久久夜色精品国产69乱青草| 亚洲97在线观看| 91亚洲国产成人精品性色| 亚洲精品久久久久中文字幕欢迎你| 国产精品88a∨| 国产成人在线一区| 日韩中文理论片| 久久久免费高清电视剧观看| 国产成人jvid在线播放| 伊人青青综合网站| 日韩久久免费电影| 国产午夜精品视频免费不卡69堂| 亚洲少妇激情视频| 久久久精品中文字幕| 欧美性色视频在线| 欧美噜噜久久久xxx| 国产精品福利小视频| 日韩电影大全免费观看2023年上| 浅井舞香一区二区| 久色乳综合思思在线视频| 韩日精品中文字幕| 18一19gay欧美视频网站| 久久精品国产精品亚洲| 国产亚洲精品美女久久久久| 啪一啪鲁一鲁2019在线视频| 色综合久久久888| 69久久夜色精品国产7777| 国产精品永久免费视频| 欧美大全免费观看电视剧大泉洋| 精品动漫一区二区三区| 91久久久久久久| 欧美区在线播放| 久久久精品亚洲| 日韩大陆欧美高清视频区| 日本一区二区在线播放| 久久久亚洲影院你懂的| 成人www视频在线观看| 欧日韩不卡在线视频| 欧美精品久久久久久久免费观看| 免费91麻豆精品国产自产在线观看| 欧美精品在线看| 午夜精品福利电影| 国产不卡av在线| 国产99久久精品一区二区 夜夜躁日日躁| 成人黄色av播放免费| 国产精品美乳一区二区免费| 中文字幕国产精品| 欧美大片在线看免费观看| 成人欧美一区二区三区黑人孕妇| 国产精品一区二区三| 动漫精品一区二区| 亚洲的天堂在线中文字幕| 精品女同一区二区三区在线播放| 色噜噜狠狠色综合网图区| 国产婷婷成人久久av免费高清| 亚洲精品网站在线播放gif| 国产精品久久久久免费a∨大胸| 国产欧美一区二区三区久久人妖| 亚洲欧美在线免费观看| 久久99精品国产99久久6尤物| 欧美精品久久久久a| 伊人青青综合网站| 色偷偷88888欧美精品久久久| 黑人欧美xxxx| 91高清免费视频| 成人欧美一区二区三区在线| 国产精品直播网红| 国产成人精品在线观看| 国产剧情久久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美大尺度在线观看| 日韩中文字幕在线播放| 啊v视频在线一区二区三区| 8050国产精品久久久久久| 91久热免费在线视频| 97在线观看视频| 69国产精品成人在线播放| 91欧美精品成人综合在线观看| 日韩精品免费在线播放| 色噜噜国产精品视频一区二区| 精品国产乱码久久久久久虫虫漫画| 亚洲成人免费网站| 欧美日韩中文在线观看| 2019中文字幕全在线观看| 国产亚洲欧美日韩精品| 日韩av大片免费看| 亚洲精品一区久久久久久| 亚洲综合色激情五月| 国产一级揄自揄精品视频|