- 創(chuàng)建package.json配置文件
可以使用 npm init -y 一鍵生成 package.json文件
安裝依賴
使用npm install -S 包名 可以在安裝依賴庫的同時(shí),更新package.json文件
這里使用了express 具體的安裝不說了古程,直接進(jìn)入正文
var express = require("express");
var router = express.Router();
var fs = require("fs");
var path = require("path");
var formidable = require("formidable");
//提供路由接口 當(dāng)訪問這個(gè)路由的根目錄時(shí) 會走這個(gè)處理函數(shù)
router.post("/", function(req, res, next) {
console.log("開始文件上傳....");
// 使用formidable form來解析收到的請求 可以直接將文件寫入本地
var form = new formidable.IncomingForm();
//設(shè)置編輯
form.encoding = "utf-8";
//設(shè)置文件存儲路徑 必須要寫
form.uploadDir = "./public/images/";
//保留后綴
form.keepExtensions = true;
//設(shè)置單文件大小限制
form.maxFieldsSize = 5 * 1024 * 1024;
//form.maxFields = 1000; 設(shè)置所以文件的大小總和
// 使用form解析請求 fields 是文件之外的所有的字段 files包含文件信息
form.parse(req, function(err, fields, files) {
console.log(fields);
//錯(cuò)誤處理
if (err) {
res.json({
code: 0,
message: `${err.message}`
});
return;
}
// 文件為空處理
if (!files | (Object.keys(files).length == 0)) {
res.json({
code: 0,
message: `文件不能為空`
});
return;
}
// 修改文件名
var dir = form.uploadDir;
// 注意 files的file屬性 是用戶上傳設(shè)置的參數(shù)名 如果設(shè)置的是fileName 那么就需要用files.FileName
// 打印files會發(fā)現(xiàn)是個(gè)對象 file 對應(yīng)一個(gè)File {} 這個(gè)格式我不是很了解 可能是說這是個(gè)文件吧 可以略過File直接使用files.file.屬性 獲取屬性值
var oldName = files.file.path;
var newName = path.join(dir, files.file.name);
//修改文件名以及后綴
fs.rename(oldName, newName, () => {
console.log(`renameed to ${newName}`);
});
res.json({
code: 1
});
});
});
module.exports = router;