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

node.js使用express框架進(jìn)行文件上傳詳解

 更新時(shí)間:2019年03月03日 11:02:33   投稿:laozhang  
在本篇內(nèi)容里小編給大家整理了關(guān)于node.js使用express框架進(jìn)行文件上傳的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們跟著學(xué)習(xí)下。

關(guān)于node.js使用express框架進(jìn)行文件上傳,主要來(lái)自于最近對(duì)Settings-Sync插件做的研究。

目前的研究算是取得的比較好的進(jìn)展。

Settings-Sync中通過(guò)快捷鍵上傳文件,其實(shí)主要還是請(qǐng)求后端接口。

于是我便使用node.js模擬一個(gè)服務(wù),這個(gè)服務(wù)其實(shí)就相當(dāng)于github api(Settings-Sync實(shí)際請(qǐng)求的接口,比如token驗(yàn)證,gist存儲(chǔ)創(chuàng)建等都是來(lái)自github 對(duì)應(yīng)的api)。

話(huà)不多說(shuō),直接代碼貼起講解:

1.創(chuàng)建一個(gè)node.js項(xiàng)目(這里我以express框架為例)

關(guān)于如何創(chuàng)建一個(gè)node.js項(xiàng)目我就不詳細(xì)說(shuō),通常通過(guò)npm init就可以創(chuàng)建一個(gè)node.js項(xiàng)目了。
關(guān)于node.js項(xiàng)目詳細(xì)教程,可以參考該篇文章nodeJS入門(mén)——新建一個(gè)項(xiàng)目及代碼詳解
當(dāng)然了,如果你是直接通過(guò)這篇文章操作,最先可能會(huì)報(bào)這個(gè)錯(cuò)誤,錯(cuò)誤信息如下:

'express' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
或批處理文件。

解決方式很簡(jiǎn)單,并不是npm install -g express就可以的,在此之前還需執(zhí)行npm install -g express-generator

這條命令很好理解,你可以將其理解為你的express框架生成器,以Java中Maven來(lái)說(shuō),通常ide就把maven結(jié)構(gòu)都弄好了,你只需在創(chuàng)建項(xiàng)目的時(shí)候,勾選maven即可,它會(huì)自己將所有相關(guān)項(xiàng)目包括配置文件一起生成。

雖然說(shuō)我將地址貼出來(lái),但是我覺(jué)得還是實(shí)際操作一遍,這樣對(duì)此有一個(gè)感性認(rèn)識(shí)(初學(xué)編程的人或者是已經(jīng)有編程經(jīng)驗(yàn)的人,是絕對(duì)不能忽略這一點(diǎn)的)。

流程如下:

a.使用express命令創(chuàng)建express項(xiàng)目

express blog

效果圖如下:

express非常有人性化,已經(jīng)告訴你怎么進(jìn)入blog項(xiàng)目及其安裝相關(guān)的庫(kù)依賴(lài)和啟動(dòng)了,你只需按照它的這個(gè)步驟,一步一步來(lái)就行了

b.目錄結(jié)構(gòu)分析示意圖如下所示:

  • app.js:——啟動(dòng)文件,也可以說(shuō)是主文件入口。
  • package.json——定義了這個(gè)項(xiàng)目所需要的各種模塊,以及項(xiàng)目的配置信息(比如名稱(chēng)、版本、許可證等元數(shù)據(jù))。npm install命令根據(jù)這個(gè)配置文件,自動(dòng)下載所需的模塊,也就是配置項(xiàng)目所需的運(yùn)行和開(kāi)發(fā)環(huán)境。
  • node_modules——存放package.json中安裝的模塊,當(dāng)你在package.json添加依賴(lài)的模塊并安裝后,存放在這個(gè)文件夾下
  • public——存放image、css、js等文件
  • routes——存放路由文件
  • views——存放視圖文件或者說(shuō)模板文件
  • bin——存放可執(zhí)行文件

2.使用express框架進(jìn)行文件上傳

注意,目錄結(jié)構(gòu)如下所示(我主要是復(fù)用最近研究的mock-github-api):

a.準(zhǔn)備html文件

public文件夾主要放置靜態(tài)文件,如index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>文件上傳</title>
</head>
<body>
 <h3>文件上傳:</h3>
 選擇一個(gè)文件上傳: <br />
 <form action="/gists" method="post" enctype="multipart/form-data">
  <input type="file" name="content" />
  <br />
  <input type="submit" value="上傳文件" />
 </form>
 
</body>
</html>

b.編寫(xiě)相關(guān)的js

像upload.js屬于路由,通常放置在routes文件夾下

var fs = require('fs');
var express = require('express');
var multer = require('multer');
var path = require('path');
var router = express.Router();

var upload = multer({dest: 'upload_tmp/'});

router.post('/', upload.any(), function(req, res, next) {
 console.log(req.files[0]); // 上傳的文件信息

 var des_file = "./upload/" + req.files[0].originalname;
 fs.readFile( req.files[0].path, function (err, data) {
  fs.writeFile(des_file, data, function (err) {
   if( err ){
    console.log( err );
   }else{
    response = {
     message:'File uploaded successfully',
     filename:req.files[0].originalname
    };
    console.log( response );
    res.end( JSON.stringify( response ) );
   }
  });
 });
});

module.exports = router;

c.上傳文件及其效果頁(yè)面圖:

 

上傳成功顯示圖:

upload文件夾下會(huì)有對(duì)應(yīng)的文件(也就是你剛剛通過(guò)頁(yè)面上傳的文件)

最后例子中還有阿里云和騰訊云的圖片存儲(chǔ),大家可以做一個(gè)參考。

源碼地址為:https://github.com/developers-youcong/mock-github-api

希望能夠?qū)Υ蠹矣兴鶈l(fā)和幫助

注意,可能遇到的問(wèn)題:

問(wèn)題一:靜態(tài)資源需要放行,否則無(wú)法訪問(wèn)
在index.js補(bǔ)充這段代碼即可解決這個(gè)問(wèn)題

app.use(express.static(path.join(__dirname, 'public')))

問(wèn)題二:socket hang up

我將var bodyParser = require(‘body-parser')去除就解決了這個(gè)問(wèn)題

錯(cuò)誤信息:ERROR: { [Error: socket hang up] code: 'ECONNRESET' }

分析原因:由于某種原因,導(dǎo)致http目標(biāo)地址建立socket連接的時(shí)候出錯(cuò)
錯(cuò)誤解決:經(jīng)過(guò)對(duì)比查找,發(fā)現(xiàn)我這里nodejs項(xiàng)目中有對(duì)中間件“body-parser”的使用,將其去除,則沒(méi)有問(wèn)題了
還有其他一些原因,這里暫時(shí)沒(méi)有遇到,就不多做解釋了,

相關(guān)文章

  • npm報(bào)版本與node.js不匹配問(wèn)題及解決

    npm報(bào)版本與node.js不匹配問(wèn)題及解決

    這篇文章主要介紹了npm報(bào)版本與node.js不匹配問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • node.js 核心http模塊,起一個(gè)服務(wù)器,返回一個(gè)頁(yè)面的實(shí)例

    node.js 核心http模塊,起一個(gè)服務(wù)器,返回一個(gè)頁(yè)面的實(shí)例

    下面小編就為大家?guī)?lái)一篇node.js 核心http模塊,起一個(gè)服務(wù)器,返回一個(gè)頁(yè)面的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 深入nodejs中流(stream)的理解

    深入nodejs中流(stream)的理解

    本篇文章主要介紹了深入nodejs中流(stream)的理解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Node.js安裝詳細(xì)步驟教程(Windows版)詳解

    Node.js安裝詳細(xì)步驟教程(Windows版)詳解

    這篇文章主要介紹了Node.js安裝詳細(xì)步驟教程(Windows版),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • node.js爬取中關(guān)村的在線電瓶車(chē)信息

    node.js爬取中關(guān)村的在線電瓶車(chē)信息

    這篇文章主要給大家介紹了關(guān)于利用node.js如何爬取中關(guān)村的在線電瓶車(chē)信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Nodejs使用dgram模塊創(chuàng)建UDP服務(wù)詳解

    Nodejs使用dgram模塊創(chuàng)建UDP服務(wù)詳解

    這篇文章主要為大家介紹了Nodejs使用dgram模塊創(chuàng)建UDP服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • node.js中的fs.linkSync方法使用說(shuō)明

    node.js中的fs.linkSync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.linkSync方法使用說(shuō)明,本文介紹了fs.linkSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs制作小爬蟲(chóng)功能示例

    nodejs制作小爬蟲(chóng)功能示例

    這篇文章主要介紹了nodejs制作小爬蟲(chóng)功能,結(jié)合實(shí)例形式分析了node.js安裝request、cheerio模塊及請(qǐng)求發(fā)送、數(shù)據(jù)庫(kù)操作等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • 深入淺析NodeJs并發(fā)異步的回調(diào)處理

    深入淺析NodeJs并發(fā)異步的回調(diào)處理

    這篇文章主要介紹了NodeJs并發(fā)異步的回調(diào)處理的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Nodejs使用pkg打包為可執(zhí)行文件的解決方案

    Nodejs使用pkg打包為可執(zhí)行文件的解決方案

    使用pkg將Node.js項(xiàng)目打包為可執(zhí)行文件時(shí),可能會(huì)遇到一些常見(jiàn)的錯(cuò)誤,如未指定目標(biāo)平臺(tái)、在遠(yuǎn)程緩存中找不到基礎(chǔ)Node.js二進(jìn)制文件等,本文介紹了如何通過(guò)配置package.json中的bin入口、手動(dòng)下載指定版本的Node.js二進(jìn)制文件到本地.pkg-cache目錄解決這些問(wèn)題
    2024-11-11

最新評(píng)論

洛阳市| 贺州市| 南阳市| 马龙县| 石台县| 九龙坡区| 清水河县| 喀喇沁旗| 安国市| 苗栗县| 岳普湖县| 霍林郭勒市| 建瓯市| 雷州市| 绥棱县| 特克斯县| 西青区| 中方县| 石林| 延川县| 龙门县| 江阴市| 都江堰市| 老河口市| 卢龙县| 龙门县| 大荔县| 清徐县| 启东市| 江陵县| 南溪县| 望都县| 普陀区| 贵阳市| 禄劝| 迁安市| 阿鲁科尔沁旗| 桐梓县| 弥渡县| 磴口县| 扎兰屯市|