Nodejs 上傳下載功能的實現(同步)


上傳和下載可分為兩種,一種是form表單的形式(同步),另一種是Ajax的形式(異步)。

示例一(form表單):

html代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="uploadfile.do" method="post" enctype="multipart/form-data">
    <!--上傳上來的是文本格式,用enctype轉換成數據格式-->
    <input type="file" name="myfile"/><!--file為專門使用上傳的表單項-->
    <button>上傳</button>
</form>
</body>
</html>

  代碼路徑截圖如下:

 

 

app.js文件的代碼如下:

"use strict";
const myExpress=require("express");  //調用模塊
const app=myExpress();//創建服務器
const myfs=require("fs");//文件的輸入輸出
app.configure(function(){
   app.use(myExpress.logger("dev"));
    app.use(myExpress.bodyParser({uploadDir:"./public/temp"}));
    app.use(myExpress.methodOverride());
    app.use(myExpress.static(__dirname+"/public"));
    app.use(myExpress.favicon(__dirname+"/public/image/logo-2.png"));
    app.use(myExpress.errorHandler());
});

app.set("port","8080");
app.listen(app.get("port"),function(){
    console.log("服務啟動jan09");
});
//上傳上來的文件一般都存在C盤的臨時文件中,若要存儲在服務器重需要設置一個臨時存儲地,還需要在
//服務器配置中的bodyParserz中配置bodyParser({uploadDir:".public/temp"{)
app.post("/uploadfile.do",function(req,res){
    console.log(req.files);//文件上傳請求信息
    let username="zzz";//這里的name需要用戶登錄,存在session中,然后從session中取出來
    let tempPath=req.files.myfile.path;//找到臨時路徑
    let filename=req.files.myfile.originalFilename;
    let targetPath="./public/upload/"+username+"/"+filename;//將文件放入上傳上來的目標路徑
    if(myfs.existsSync("./public/upload/"+username)==false){//判斷upload路徑下是否存在該用戶的文件夾
        myfs.mkdirSync("./public/upload/"+username);//沒有的話,就創建一個文件夾
    }
    myfs.rename(tempPath,targetPath,function(err,data){
        console.log(err);
        console.log(data);
        if(err==null){
            res.send("upload succeed!");
        }else{
            throw err;//拋出錯誤
        }
    })
}); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM