浅谈node实现图片上传的方法


本文摘自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文件夹。代码如下:

阅读剩余部分

相关阅读 >>

Node sass是干嘛的

html5+canvas调用手机拍照功能实现图片上传功能(图文详解下篇)

Node服务中如何监控本地环境及生产环境的内存变化?

详解html5图片上传支持图片预览压缩及进度显示兼容ie6及标准浏览器

h5完成多图片上传的实例详解

Node.js设置允许跨域的方法

Node.js创建简单聊天室的方法介绍

html5+canvas调用手机拍照功能实现图片上传功能(图文详解上篇)

vue.js就是Node

图片批量上传js插件 imgfileupload.js

更多相关阅读请进入《Node》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...