node 上传文件 路径 重命名等问题
最近在学习node,想做一个简单的网站。首先想到的是上传文件的功能,查了下,发现有一个formidable模块,操作方便,便拿来尝试了一下,结果很纠结。
下载安装的就不用说了,用npm即可。说一下,自己遇到的问题吧,mark一下,防止再犯。
当然,使用的例子也是最广泛的,即官网上的那个,懒,就不在此贴上了。。。。还有,我用的是html是jade
首先是没有给上传文件的input标签添加name属性,导致它的files域为空,从正常的结果来看,files是以file的name为对象的集合。

还有需要注意的是res.writeHead(200,{'content-type':'text/plain;charset=utf-8'});,否则返回中文等显示乱码,切记中中间的是分号(绿色),html菜鸟飘过。。。
还有就是上传路径的指定。如果没有指定路径的话,文件会被上传到电脑默认的临时文件夹下面(我的在c:/user/admin/appdata/local/temp下)。起初,我设定的路径入下:
form.uploadDir = "/temp";
这个temp是需要先在项目中创建好的。
PS:名字起得太有争议了,和系统文件夹名字重名了,不过也让我了解多了些问题本质,\(^o^)/~
在上图可以看到它的path显示,在我的电脑上找,原来是被存放到系统盘C:\TEMP。本来认为的是文件会被存入到项目根目录下的temp文件夹中,却忽略了/temp是根目录的表示。。。于是,添加一个"."来表示当前目录,也就是项目的路径。form.uploadDir = "./temp";果然,在项目的temp下,真的出现了上传文件,可惜名字无法辨别。。。虽然path显示的和以前的差不多,不过此temp非彼temp。。。我们可以看到,前者前面带有“\\”表示根目录即绝对路径,后者以“temp”开始,表示相对路径。
下面便是想改个名字,以方便以后对文件进行操作。
改名字的话就要用到fs模块了,对文件进行操作嘛。
var fs = require('fs')
在相应的函数里面加上下面这句:
fs.renameSync(files.upload.path,"change.txt");
首先,我是不清楚它的原理,大概的意思是猜它将重命名上传路径上文件的名字,我想将文件名称改为change.txt。结果呢,文件是被重命名了,不过它却出现在项目的根目录下面,不明白。。。
返回的信息也是显示如上图的信息,path还是temp加上一长串,这表示,我错了。
再次尝试,fs.renameSync(files.upload.path,"./temp/change.txt");其实,这我也该想到了,前一个参数是文件名称的全称包含它的路径,所以我们改的话也是要加上它的目标路径的(相对路径,不然又要到系统里的temp找了),而不只是它的名字。本次的结果是正确的,在项目的temp下,出现change.txt文件,但是返回的信息还是temp加一个长串字符,这样,我们也该知道,这是它原生态的名字,而不是我们改过后的。
node 上传文件 路径 重命名等问题的更多相关文章
- NodeJS+formidable实现文件上传加自动重命名
前述 本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form ...
- django如何给上传的图片重命名(给上传文件重命名)
1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码: # -*- coding: UTF-8 -* ...
- node 上传文件 http client to post file
node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://i ...
- input[type='file']获取上传文件路径案例
最近在项目时,需要获取用户的上传文件的路径,便写了一个demo: <body> <input type="file" name="" valu ...
- node - 上传文件并且修改名称
html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- node上传文件并在网页中展示
一.需求 1.当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 2.用户可以选择一个图片并提交表单,随后文件将被上传到http://domain/ ...
- jboss7 添加虚拟目录 上传文件路径
直接在jboss-as-7.1.1.Final\welcome-content\下加个子目录: jboss-as-7.1.1.Final\welcome-content\logs. 即可访问.
- springboot上传文件路径存放
@Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return (Config ...
- linus jsch上传文件
package com.osplat.util; import java.io.*; import com.jcraft.jsch.*;import com.osplat.bean.Resultmod ...
随机推荐
- Linux_常用命令
文件搜索 -find -locate -grep 字符串搜索 -grep 过滤 -grep/find/xargs/ 编辑 -sed 待续....
- google base 之MessagePumpForUI
base库中比较有意思就是这个类了,如同很多界面库一样,创建了一个隐藏窗口来处理需要在界面线程处理的消息,大体原理也就是需要执行task的时候发送一个自定义的消息,当窗口接收到task的时候调用保存起 ...
- OpenCV学习(1) OpenCV的安装
前沿 准备了好几天,终于开始了,不管怎样,接下来的这个月一定把这本书很好的啃下来.当然OpenCV可以在很多的IDE下安装与配置,我这里就只在VS2010和VC6.0下安装配置了,当然这篇博文主要讲在 ...
- hadoop笔记之MapReduce的运行流程
MapReduce的运行流程 MapReduce的运行流程 基本概念: Job&Task:要完成一个作业(Job),就要分成很多个Task,Task又分为MapTask和ReduceTask ...
- MyEclipse数据库反向生成实体类
MyEclipse数据库反向生成实体类 “计应134(实验班) 凌豪” 当我们在开发项目涉及到的表太多时,一个一个的写JAVA实体类很是费事.然而强大的MyEclipse为我们提供简便的方法:数据库反 ...
- hdu 5724 Chess 博弈
题目链接 一个n行20列的棋盘. 每一行有若干个棋子. 两人轮流操作, 每人每次可以将一个棋子向右移动一个位置, 如果它右边有一个棋子, 就跳过这个棋子, 如果有若干个棋子, 就将这若干个都跳过. 但 ...
- vijos 1047 送给圣诞夜的礼品 矩阵
题目链接 描述 当小精灵们把贺卡都书写好了之后.礼品准备部的小精灵们已经把所有的礼品都制作好了.可是由于精神消耗的缘故,他们所做的礼品的质量越来越小,也就是说越来越不让圣诞老人很满意.可是这又是没有办 ...
- XML实例入门2
工具:notepad++.VS2008(MSXML6.0) 来自msdn的例子(经过修改,因为升级到MSXML6.0,有些关键字不太一样了), 需要文件books.xml,books.vsd(博客只支 ...
- Microsoft Office 2010 Pro VOL简体中文正式版
网友们期待的Microsoft Office Professional Plus 2010 VOL简体中文正式版.所谓的“VOL”,即是Volume Licensing for Organizatio ...
- tomcat path配置
<pre name="code" class="html">demo:/root# curl http://192.168.32.42:8082/a ...