适当存储图像

woobm2wo  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(245)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两年前关门了。
改进这个问题
我想用 mysql 以及 nodejs . 我已经读到将它们直接存储在数据库中不是一个好主意,但是我应该将映像的路径存储在数据库中,并将映像存储在文件系统中。
假设一个用户上传了一个图像,那么我该如何将图像存储在文件系统中呢?

j1dl9f46

j1dl9f461#

使用multer中间件进行文件上传。
https://www.npmjs.com/package/multer

zd287kbt

zd287kbt2#

:d除了multer,如果您使用的是express,还可以尝试“express fileupload”。将req.files添加到您的请求中(:d更易于使用imo)
https://www.npmjs.com/package/express-fileupload
https://github.com/richardgirges/express-fileupload/tree/master/example#basic-文件上传

const fileUpload = require('express-fileupload');
expressApp.use(fileUpload());

然后在你的路线上:

app.post('/upload', function(req, res) {
console.log(req.files.foo); // the uploaded file object
});

我还使用“夏普”调整图像大小:
https://www.npmjs.com/package/sharp
示例(我没有测试过这段代码,只是从项目中复制和更改了一点):

expressApp.post('/submit-form',(req,res)=>{
let f = req.files.profileImage;
//its usually a good idea to rename files uploaded to sth unique using DateTime with their original name (or instead of their original file name)
const fileName = (f.name.substring(0, f.name.lastIndexOf('.')) + '-' + Date.now().toString()).replace(' ','');
const fileFormat = f.name.substring(f.name.lastIndexOf('.'), f.name.length);
const filePath = path.resolve('public/media') + '/' + folder + fileName + fileFormat;
f.mv((err)=>{
    if(err)
    {
        console.log('sth went wrong while uploading image!');
        return;
    }
    //HERE STORE filePath to Database or sth:

});
})

相关问题