查看: 423|回复: 0

[JavaScript/JQuery] nodejsApi之path和fs

发表于 2017-8-8 12:00:10
基于v6.10.3版本 1. path 1.1 Windows 与 POSIX

posix是和windows相对的,可以类比Unix。path在两种平台上表现不一样,如果想获取一致,那么统一为windows样式用path.win23;统一为posix样式用path.posix.

1.2 path的属性(dir,base,root,name,ext)

1.3 path的方法

path.dirname():取dir

path.basename():取base

path.extname():取ext

path.parse(str):把str转为obj

path.format(obj):把obj转为str

path.resolve():把两个path片段合为一个

path.isAbsolute(path):是否是绝对路径

path.relative(from, to):path.relative() 方法返回从 from 到 to 的相对路径。

path.normalize(path):标准化path

path.join([...paths]):使用平台特定的分隔符把全部给定的path片段连接到一起,并规范化生成的路径。

path.delimiter:提供平台特定的路径分隔符:Windows 上是 ; POSIX 上是 :

path.sep:提供了平台特定的路径片段分隔符:Windows 上是 POSIX 上是 /

2. filesystem常用方法

fs.readFile: 读文件

fs.readdir:读文件夹

fs.writeFile:写文件

fs.mkdir:建文件夹

fs.stat:文件状态

fs.rename(oldPath, newPath, callback):重命名,包括修改路径

3. 接受post参数 包括文件上传
  1. const http = require('http');
  2. const fs = require('fs');
  3. const util = require('util');
  4. const formidable = require('formidable');
  5. http.createServer((req, res) => {
  6. if (req.url == '/favicon.ico') {
  7. res.writeHead(200, {
  8. 'content-type': 'image/png;charset=utf-8'
  9. });
  10. fs.readFile('./static/images/favicon.png', data => {
  11. res.end(data);
  12. });
  13. return;
  14. } else if (req.url == '/') {
  15. res.writeHead(200, {
  16. 'content-type': 'text/html;charset=utf-8'
  17. });
  18. fs.readFile('./static/index.html', (err, data) => {
  19. if (err) {
  20. console.log(err.to);
  21. res.end('err');
  22. } else {
  23. res.end(data);
  24. }
  25. });
  26. } else if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
  27. var form = new formidable.IncomingForm();
  28. form.uploadDir = "./uploads"; // 如果当前路径不存在会报错
  29. form.parse(req, function(err, fields, files) {
  30. res.writeHead(200, {
  31. 'content-type': 'text/plain'
  32. });
  33. res.write('received upload:\n\n');
  34. const oldPath = './' + files.icon.path;
  35. const newPath = './uploads/' + files.icon.name;
  36. fs.rename(oldPath, newPath, err => {
  37. if (!err) {
  38. res.end(util.inspect({// inspect会把对象转为string
  39. fields: fields,
  40. files: files
  41. }));
  42. }
  43. });
  44. });
  45. } else {
  46. res.end('done');
  47. }
  48. }).listen(3000);
复制代码

form页面:

  1. // 加图片/文件上传的form必须加enctype为'multipart/form-data'
  2. <form action="/upload" method="post" enctype="multipart/form-data" >
  3. 姓名:
  4. <input name="name" type="text"/>
  5. <br/>
  6. 头像:
  7. <input name="icon" type="file"/>
  8. <br/>
  9. <input type="submit"/>
  10. </form>
复制代码


回复

使用道具 举报