如何修补 multer 文件名?

How can I patch the multer filename?

const multerStorage = multer.diskStorage({
destination: (req, file, cb) =>{
    cb(null, '../client/public/uploadImg' )
},
filename :  (req, file, cb) => {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
    cb(null, file.fieldname + '-' + uniqueSuffix + '_' + file.originalname)
  }

})

为我的文件创建一个唯一的名称并保存在 uploadIng 文件夹中后,我现在需要获取文件名以便我可以在我的客户端添加文件

  {usrs.map((alldata, i)=>(
            <div key={i} >
                <img src={`/uploadImg/${alldata.photo}`} alt="..." />
                <h1> {alldata.name}</h1>
                <h3> {alldata.photo} </h3>
            </div>
        ))}

在某些时候,您的客户端正在发出 HTTP 请求(我假设是 Ajax 请求)以上传图片。

这将由一些服务器端代码处理。这是来自 the documentation 的示例:

const multer  = require('multer')
const upload = multer({ dest: './public/data/uploads/' })
app.post('/stats', upload.single('uploaded_file'), function (req, res) {
   // req.file is the name of your file in the form above, here 'uploaded_file'
   // req.body will hold the text fields, if there were any 
   console.log(req.file, req.body)
});

您需要在对 Ajax 请求的响应中发送 req.file 的值(或者更确切地说是从中派生的 URL 的值)。

由于您的客户端代码使用的是 JSX,因此我假设您使用的是 React.js。

client-side代码需要注意那个响应并将结果存储在state.

然后您可以在渲染组件时从状态中读取值。