上传和下载可分为两种,一种是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;//抛出错误
}
})
}); 

最新文章

  1. MVC CheckBoxList的实现
  2. openssl evp 对称加密(AES_ecb,ccb)
  3. HIbernate的脏数据检测和延缓加载
  4. 6.python模块(导入,内置,自定义,开源)
  5. (转)如何在Windows上安装多个MySQL
  6. C#程序通过模板自动创建Word文档
  7. CSS2书写顺序
  8. Java中int与Integer
  9. python3和Python2的区别(被坑太久了)
  10. iOS 9 地图定位崩溃 n: &#39;Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal-&gt;fClient)&#39;
  11. c++中的const参数,const变量,const指针,const对象,以及const成员函数
  12. 架构师之路-在Dubbo中开发REST风格的远程调用
  13. python 中的 args,*args,**kwargs的区别
  14. poj3728 商务旅行
  15. List&lt;string&gt;序列化与反序列化一个小坑
  16. pycharm搭建开发配置,远程调试,数据库配置,git配置等
  17. mybatis xml中的大于、小于等符号写法
  18. Design-341. Flatten Nested List Iterator
  19. 【bat】通过for循环复制一张图片100次
  20. VC dimension and Model complexity

热门文章

  1. git 的记住用户名和密码和一些常用
  2. 弹出层easydialog-v2.0
  3. Java数字、货币值和百分数等的格式化处理
  4. HTML5 离线缓存忽略主页实例
  5. Web字体库下载及转换工具
  6. (转)一步一步学习PHP(3)——函数
  7. Android 自定义日历
  8. [个人原创]关于java中对象排序的一些探讨(一)
  9. 对C#泛型实例化对像--转
  10. 使用C#连接ORACLE数据库