node 图片上传功能
node 代码:
var http = require("http");
var express = require('express')
app = express(),
formidable = require('formidable'),
fs = require('fs');
app.use(express.static(__dirname + "/public"));
//创建服务器
http.createServer(app).listen(, function() {
console.log("当前您设置的端口号为" + );
});
app.post('/', function(req, res) {
var formidable = require('formidable');
var form = new formidable.IncomingForm(); //创建上传表单
form.encoding = 'utf-8'; //设置编辑
form.uploadDir = 'img/'; //设置上传目录/并且保证该目录存在 否则上传不成功
form.keepExtensions = true; //保留后缀
form.maxFieldsSize = * * ; //文件大小
form.parse(req, function(err, fields, files) {
console.log(fields);//前台传的其他参数
if(err){
console.log(err);
}
var item = null;
for(var i in files){
item = files[i];
}
var extName = ''; //后缀名
switch (item.type) {
case 'image/pjpeg':
extName = 'jpg';
break;
case 'image/jpeg':
extName = 'jpg';
break;
case 'image/png':
extName = 'png';
break;
case 'image/x-png':
extName = 'png';
break;
}
if(extName.length == ){
console.log('只支持png和jpg格式图片');
return;
}
var avatarName = Date.now() + '.' + extName; //设置图片名字
var newPath = form.uploadDir + avatarName; //设置新的图片路径
fs.renameSync(item.path, newPath); //重命名
console.log(newPath);
res.send(newPath);
});
});
form表单上传:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="fulAvatar" id="file1" />
<input type="text" name="text" id="" value="" />
<input type="submit" value="上传"/>
</form>
ajax上传:
html代码: <input type="file" name="fulAvatar" id="file1" />
<button id='file'>上传</button> js代码:
$('#file').click(function(){
var data = new FormData();
var files = $("#file1")[].files;
if(files){
data.append("fulAvatar", files[]);
}
data.append('name','zs');//传其他数据
if(files[].size>){
alert('上传图片大小不得超过100KB');
return false;
}
$.ajax({
type: 'post',
url:'/',
data:data,
contentType: false,
processData: false,
success : function (msg) {
console.log(msg);
}
})
});
原生ajax上传:
html代码: <input type="file" name="fulAvatar" id="file1" />
<button id='btn'>上传</button> js代码:
document.querySelector('#btn').onclick = function() {
var fileObj = document.getElementById("file1").files[];
var form = new FormData();
form.append("fulAvatar", fileObj);
form.append("test","zs");//传其他数据
var XHR=null;
if (window.XMLHttpRequest) {
// 非IE内核
XHR = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// IE内核,这里早期IE的版本写法不同,具体可以查询下
XHR = new ActiveXObject("Microsoft.XMLHTTP");
} else {
XHR = null;
}
if(XHR){
XHR.open("POST", "http://www.hxh999.cn/img");
XHR.onreadystatechange = function () {
if (XHR.readyState == && XHR.status == ) {
// 这里可以对返回的内容做处理
// 一般会返回JSON或XML数据格式
console.log(XHR.responseText);
// 主动释放,JS本身也会回收的
XHR = null;
}
};
XHR.send(form);
}
}
注意:
form.parse()不会触发的原因是:app.use(express.bodyParser())这一句处理了文件类型的post,所以导致那些第三方包对文件的处理都不起作用了。
express.bodyParser实际上包括了三部分:express.json, express.urlencoded, 和 express.multipart(就是处理了文件的部分),所以我们实际上只需要它的前两部分就够了。
// 将:
app.use(express.bodyParser()); // 改为:
app.use(express.json());
app.use(express.urlencoded());
node 图片上传功能的更多相关文章
- thinkphp达到UploadFile.class.php图片上传功能
片上传在站点里是非经常常使用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php).方便于我们去实现图片上传功能,以 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...
- PHP语言学习之php做图片上传功能
本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...
- [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站
前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...
- H5 利用vue实现图片上传功能。
H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...
- 给DEDECMS广告管理中增加图片上传功能
dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...
- vue 图片上传功能
这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下: <ul class="clearfix"> ...
- 前端丨如何使用 tcb-js-sdk 实现图片上传功能
前言 tcb-js-sdk 让开发者可以在网页端使用 JavaScript 代码服务访问云开发的服务,以轻松构建自己的公众号页面或者独立的网站等 Web 服务.本文将以实现图片上传功能为例,介绍 tc ...
- Node.js实现图片上传功能
node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...
随机推荐
- word如何让单页变横向
word作为图文排版用户最多的软件之一,其功能的强大自不必说,比如将某一页在版式排版上设置为横排方向.那么,应该如何才能设置为横排的纸张呢?请阅读下文! 工具/原料 Microsoft Office ...
- Linux下安装xampp和bugfree
1.BugFree简介 1.1 BugFree的来源 BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理系统.简单实用.免费并且开放源代码(遵循GNU ...
- mysql 官方docker镜像使用教程
首先是pull image,这里我拉取的是5.x版本最新版: docker pull mysql:5 拉下来以后大可以按照官方的说明无脑启动,但是外部无法访问,所以绑定端口:docker run -- ...
- FineUI 3升级4.1.1时,SingleClickExpand属性改什么了? (树控件单击展开)
private Tree InitTreeMenu(List<Menu> menus) { Tree treeMenu = new Tree(); treeMenu.ID = " ...
- 洛谷2530(codevs2098)化工厂装箱员
题目:https://www.luogu.org/problemnew/show/P2530 dp或搜索. dp做法就是 当前值+1 转移到 当前某一维为0.位置前进了c位 的地方.但没写. 写了搜索 ...
- Nginx 整合 FastDFS 实现文件服务器
原文地址:Nginx 整合 FastDFS 实现文件服务器 博客地址:http://www.extlight.com 一.前言 本篇衔接<FastDFS 环境搭建>内容进行讲解,上篇文章我 ...
- Jquery获取元素高度
第一步, 获取你要得到高度的那个div的jQuery对象, 获得方法有很多很多种, 具体你可以看一下jQuery API文档里的选择器部分, 在这里我只跟你说一个最直接的方法, 通过id获得: $(& ...
- MVC 自定义 以表达式树为参数的htmlhelper
public static MvcHtmlString Try<TModel, TProperty>( this HtmlHelper<TModel> htmlHelper, ...
- position和margin的绝对定位和相对定位
电脑桌面清理干净之后,果然快了很多,桌面上的东西会占用内存,导致电脑变慢,以前我看到表姐的电脑桌面堆满了东西,我就在心里默默的鄙视不懂玩电脑的人,现在我竟然也养成了这种坏毛病..保存东西的时候放在桌面 ...
- JVM的DirectMemory设置
转载http://blog.csdn.net/zshake/article/details/46785469 几台服务器的JVM占用内存总是持续增长,大大超过-Xmx设定的值,服务器物理内存几乎被耗尽 ...