本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章给大家介绍一下node实现图片文件上传的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
相关推荐:《nodejs 教程》
在web开发中,文件上传是一个很重要的问题,尤其是图片上传,以及由此延伸的“进度条”、“文件大小”、以及著名的“跨域”等问题。
本demo演示的是图片的上传,服务器代码为node。
前端部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8" >
<title>Title</title>
<script src= "https://unpkg.com/axios/dist/axios.min.js" ></script>
</head>
<body>
<input type= "file" name= "file" accept= "image/*" onchange= "changeImg(event)" />
<button onclick= "submit()" >上传</button>
<script>
let file = ''
let fileName = ''
function submit() {
let data = new FormData()
data.append( 'imgName' , fileName)
data.append( 'img' , file)
axios({
method: 'post' ,
timeout: 2000,
url: 'http://localhost:8081/postApi' ,
data: data
})
.then(response => {
console.log(response.data)
})
. catch (error => {
console.log(error)
})
}
function changeImg(e) {
file = e.target.files.item(0)
if (file === null) {
return
}
fileName = file.name
}
</script>
</body>
</html>
|
采用axios发送请求 ―― 其实我们这里也可以采用另一种“跨域请求方式”(vue-resource),但这里我想了想。还是采用 后端设置跨域 的方式。
后端部分
这是本文要介绍的重点,为了用高效流畅的方式来解析文件上传请求,我们先引入formidable
库:
1 | npm install formidable --save
|
formidable的流式解析器让它成为了处理文件上传的绝佳选择,也就是说它能随着数据块的上传接收它们,解析它们,并吐出特定的部分,相信熟悉流的朋友会很好理解。这种方式不仅快,还不会因为需要大量缓冲而导致内存膨胀,即便像视频这种大型文件,也不会把进程压垮。
当然,我们要创建myImage文件,用于存放上传的图片,接着,我们创建一个IncomingForm实例form,并且设置存放路径为myImage文件夹。代码如下:
阅读剩余部分
相关阅读 >>
deno中如何使用 Node 模块?
一文快速了解Nodejs中crypto模块的用法
浅谈Node中文乱码的解决方法
深入浅出了解javascript的Node中间件原理
图片批量上传js插件 imgfileupload.js
Node服务中如何监控本地环境及生产环境的内存变化?
html5+canvas调用手机拍照功能实现图片上传功能(图文详解上篇)
windows下关闭Node进程的方法(指令版)
Node.js创建简单聊天室的方法介绍
什么是deno?与Node.js的区别是什么?
更多相关阅读请进入《Node》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 浅谈node实现图片上传的方法