亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

Settings-Sync中通過快捷鍵上傳文件,其實主要還是請求后端接口。

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

話不多說,直接代碼貼起講解:

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

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

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

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

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

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

流程如下:

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

express blog

效果圖如下:

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

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

  • app.js:——啟動文件,也可以說是主文件入口。
  • package.json——定義了這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數(shù)據(jù))。npm install命令根據(jù)這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發(fā)環(huán)境。
  • node_modules——存放package.json中安裝的模塊,當(dāng)你在package.json添加依賴的模塊并安裝后,存放在這個文件夾下
  • public——存放image、css、js等文件
  • routes——存放路由文件
  • views——存放視圖文件或者說模板文件
  • 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>
 選擇一個文件上傳: <br />
 <form action="/gists" method="post" enctype="multipart/form-data">
  <input type="file" name="content" />
  <br />
  <input type="submit" value="上傳文件" />
 </form>
 
</body>
</html>

b.編寫相關(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.上傳文件及其效果頁面圖:

 

上傳成功顯示圖:

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

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

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

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

注意,可能遇到的問題:

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

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

問題二:socket hang up

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

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

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

相關(guān)文章

  • Node.js+Express+Mysql 實現(xiàn)增刪改查

    Node.js+Express+Mysql 實現(xiàn)增刪改查

    這篇文章主要介紹了Node.js+Express+Mysql 實現(xiàn)增刪改查,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • nodejs acl的用戶權(quán)限管理詳解

    nodejs acl的用戶權(quán)限管理詳解

    這篇文章主要介紹了nodejs acl的用戶權(quán)限管理詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306的問題

    解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306的問題

    這篇文章主要介紹了解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306報錯的相關(guān)資料,文中將問題描述的很清楚,解決的方法也介紹的很完整,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • 基于node.js的fs核心模塊讀寫文件操作(實例講解)

    基于node.js的fs核心模塊讀寫文件操作(實例講解)

    下面小編就為大家?guī)硪黄趎ode.js的fs核心模塊讀寫文件操作(實例講解)。小編覺得挺不錯的,現(xiàn)在就想給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • webpack配置文件和常用配置項介紹

    webpack配置文件和常用配置項介紹

    本篇文章主要介紹了webpack配置文件和常用配置項的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 什么時候不能在 Node.js 中使用 Lock Files

    什么時候不能在 Node.js 中使用 Lock Files

    這篇文章主要介紹了什么時候不能在 Node.js 中使用 Lock Files,但是當(dāng)你在開發(fā)要發(fā)布到 npm 的包時,應(yīng)避免使用這類 lock file 。下面我們來一起了解一下吧
    2019-06-06
  • node express如何實現(xiàn)json轉(zhuǎn)Excel

    node express如何實現(xiàn)json轉(zhuǎn)Excel

    這篇文章主要介紹了node express如何實現(xiàn)json轉(zhuǎn)Excel問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • node獲取客戶端ip功能簡單示例

    node獲取客戶端ip功能簡單示例

    這篇文章主要介紹了node獲取客戶端ip功能,結(jié)合實例形式分析了node.js獲取客戶端IP地址的原理與實現(xiàn)方法,需要的朋友可以參考下
    2019-08-08
  • Node.js調(diào)用java之node-java問題

    Node.js調(diào)用java之node-java問題

    這篇文章主要介紹了Node.js調(diào)用java之node-java問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • node如何實現(xiàn)簡單的腳手架淺析

    node如何實現(xiàn)簡單的腳手架淺析

    在工作中,需要開發(fā)一個腳手架,用于給相關(guān)用戶提供相關(guān)的開發(fā)便利性,下面這篇文章主要給大家介紹了關(guān)于node如何實現(xiàn)簡單的腳手架的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論