最近在学习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 上传文件 路径 重命名等问题的更多相关文章

  1. NodeJS+formidable实现文件上传加自动重命名

    前述 本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form ...

  2. django如何给上传的图片重命名(给上传文件重命名)

    1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码: # -*- coding: UTF-8 -* ...

  3. node 上传文件 http client to post file

    node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://i ...

  4. input[type='file']获取上传文件路径案例

    最近在项目时,需要获取用户的上传文件的路径,便写了一个demo: <body> <input type="file" name="" valu ...

  5. node - 上传文件并且修改名称

    html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  6. node上传文件并在网页中展示

    一.需求 1.当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 2.用户可以选择一个图片并提交表单,随后文件将被上传到http://domain/ ...

  7. jboss7 添加虚拟目录 上传文件路径

    直接在jboss-as-7.1.1.Final\welcome-content\下加个子目录: jboss-as-7.1.1.Final\welcome-content\logs. 即可访问.

  8. springboot上传文件路径存放

    @Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return (Config ...

  9. linus jsch上传文件

    package com.osplat.util; import java.io.*; import com.jcraft.jsch.*;import com.osplat.bean.Resultmod ...

随机推荐

  1. 在node.js中使用ejs的demo 第五篇

    先说明一下我的项目的目录解构: 本项目中渲染的时候都是通过在index.js页面里面,来使用index.ejs的,首先引用必须的模块: var express = require('express') ...

  2. C++自定义命名空间

    关于C++自定义命名空间,今天验证了一下命名空间如何使用,和嵌套命名空间以及出现的bug. 如何自定义命名空间,实例如下: insertion_sort.h和insertion_sort.cpp #p ...

  3. 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

    描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数.   输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 ...

  4. 菜鸟学java开篇

    从事it工作已有接近两年的时间了, 一直从事的是php的工作, 一直都想学java ,原因就不多说了, 毕竟优秀的php程序员,都会是一个其他方面的高手, 例如java ,并不是说java有多好,ph ...

  5. javaTemplates-学习笔记三

    Routes入口 后台语言的应用入口都是从routes开始的,想要新建一个页面得学会配置routes. conf/routes 文件定义了全部应用URL的动作(Action),如果当浏览器请求访问ht ...

  6. 解决PowerDesigner中DBMS设置的问题(Repost)

    创建物理模型时DBMS下拉框是空的,没值,以前从来没遇到过这种现象,开始以为PowerDesigner安装软件的问题,不过装了又卸,卸了又装,结果还是那样,现在找到答案了:点击DBMS后面的黄色文件图 ...

  7. Scala的类中定义内部类实战

    scala独特之处在于可以在类中定义内部类,起到对外屏蔽作用. 类中默认都是public权限.后面将讲解如何引入接口,scala中的接口与java点区别.特质/接口(Trait)

  8. spring mvc 建立下拉框并进行验证demo

    原文出处:http://howtodoinjava.com/spring/spring-mvc/spring-mvc-populate-and-validate-dropdown-example/ 该 ...

  9. linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决

    linux 安装配置 jdk 应该算是一个非常主要的东西.可是我到如今才自己第一次 正式安装.果然出现了问题.. 问题就是 安装之后 找不到 安装路径 ,进而没法配置环境变量. 现象例如以下: 提示 ...

  10. C. Table Decorations(Codeforces Round 273)

    C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...