react上传图片文件到服务器——其他类似——multer修改后缀名后存储——返回静态资源

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react上传图片文件到服务器——其他类似——multer修改后缀名后存储——返回静态资源相关的知识,希望对你有一定的参考价值。

上传图片文件到服务器

客户端

第一步,获取input对象type为file的对象

  • 通过ref获取对象
//获取第一个File对象
//当上传文件为多个时,通过循坏获取多个File对象
import React,  Component,createRef  from 'react';
fromRef = createRef();



<input type="file" ref=this.fromRef/>
console.dir(this.state.fromRef.current);
let File = this.state.fromRef.current.files[0];//获取真实文件对象
console.log(File);

第二步、创建formData()对象,插入对象

var fd = new FormData();
fd.append("file",File);
let data = await post("http://10.9.46.247:4000/fdphoto",fd,
   headers:
       "content-type":"multiparty/form-data"
   
)

以下fielname(字符串)必须前端传过来的myformData对象的属性名一致,不然后端接收不到这个文件对象

服务端

目录结构

部分代码描述:

const multer = require('multer')
// const upload = multer(dest: 'uploads/')
const storage = multer.diskStorage(
    destination: function (req, file, cb) 
        cb(null, 'public/img/')//存储路径
    ,
    filename: function (req, file, cb) 
        var singfileArray = file.originalname.split('.');//扩展后缀
        var fileExtension = singfileArray[singfileArray.length - 1];
        const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
        cb(null, file.fieldname + '-' + uniqueSuffix+"." + fileExtension);
        console.log(file);
    
)
const upload = multer(
    storage
)

合并后缀名写法是这样子的

var singfileArray = file.originalname.split('.');
var fileExtension = singfileArray[singfileArray.length - 1];
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
cb(null, file.fieldname + '-' + uniqueSuffix+"." + fileExtension);
console.log(file);



这样就可在vscode中打开了。

设置公共资源目录,可以随意访问

访问图库的资源:

app.use(express.static('./public'))
++++++++
app.post('/fdphoto', upload.single('file'), (req, res) => 
    res.send(
        path: 'http://localhost:4000/img/' + req.file.filename
    )
)

以上是关于react上传图片文件到服务器——其他类似——multer修改后缀名后存储——返回静态资源的主要内容,如果未能解决你的问题,请参考以下文章

小程序中制作类似微信端上传9图功能

React Native在服务器上上传图片到php页面。

React-native 上传图片到 amazon s3

react + spring boot 上传文件和表单数据

java web开发,上传图片并读取

div中粘贴图片并上传服务器 div中拖拽图片文件并上传服务器