我们在做文件上传前需要用npm来安装一个插件先,

首先打开项目所在的目录,然后按住shift键然后右键鼠标进入命令行安装formidable

然后开始编写上传的静态页面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>附件上传表单</h1>
<form name="index" action="/post" method="post" enctype="multipart/form-data">
<label>附件:<input type="file" name="fujian"></label><br /><br />
<input type="submit" value="上传">
</form>
</body>
</html>

然后开始编写index.js文件,必须先引入刚才下载好的formidable模块

详细代码如下所示:

var http = require('http'),
fs = require('fs'),
url = require('url'),
util = require('util'),
formidable = require('formidable'),
querystring = require('querystring');
var server = http.createServer(function(req,res){
var pathname = url.parse(req.url).pathname;
if(pathname == '/index'){
var pageContent = fs.readFile('index.html','utf-8',function(err,data){
if(err){
console.log('Server error:111');
}else{
res.writeHead(200,{"Content-Type":"text/html"});
res.write(data);
res.end();
}
});
}else if(pathname == '/post'){
var form = new formidable.IncomingForm();
form.uploadDir = './temp';
form.parse(req,function(err,fields,files){
res.writeHead(200,{"Content-Type":"text/html"});
console.log(files);//看下文件上传信息
var path = files.fujian.path;
var timestamp = (new Date()).valueOf(); //生成时间戳,然后在下面用时间戳给图片命名
fs.rename(files.fujian.path,"./temp/"+timestamp+'.jpg');//这里的temp目标必须提前准备好,不然报错
res.end();
});
}else{
res.writeHead(404,{"Content-Type":"text/plain"});
res.end('error:404');
console.log('error');
}
});
server.listen(3323);
console.log('@http://localhost:3323');

然后进行测试。。。

这样我们即可成功完成上传功能....

最新文章

  1. 前后台json数据绑定——way.JS
  2. Node.js学习之简介
  3. 【uTenux】学习一个嵌入式操作系统-uTenux
  4. CString::Mid成员函数
  5. java使用split分隔,需要注意的点
  6. ACTIVITI 源码研究之命令模式执行
  7. Java中1000==1000为false而100==100为true
  8. Linux 进程(一):环境及其控制
  9. MyBatis批量删除 多态sql,构建in语句
  10. jsp页面显示数据库的数据信息表
  11. java.lang.SecurityException: Permission denied (missing INTERNET permission?) 解决
  12. codeforces 617E. XOR and Favorite Number 莫队
  13. Java学习10——package和import
  14. 8.5 filecmp--文件和文件夹比較处理
  15. FJOI2017 RP++
  16. 洛谷P3242 接水果 [HNOI2015] 整体二分
  17. 多线程系列四:AQS-AbstractQueuedSynchronizer
  18. js框架封装简单实例
  19. C++程序设计--实验二
  20. Tomcat分析

热门文章

  1. 转: svn合并分支到trunk
  2. 使用node.js的bodyParser中间件读取post数据解析
  3. HTML5音频,视频播放
  4. response.setCharacterEncoding方法未定义
  5. sql server2008企业版和标准版
  6. django internal search
  7. Magento多语言功能
  8. Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心
  9. 通过CSS使文本框中输入的小写字母变大写字母
  10. php empty isset is_null