как загрузить изображения с китайским в nodejs по multer - PullRequest
0 голосов
/ 23 мая 2019

как загрузить изображения с китайского языка в nodejs по multer, как я могу с этим поделаться,

Я гуглил это, и вся документация включает в себя multer, но не нашел ничего подходящего моему требованию

//router
const express= require('express');
const router = express.Router();
const multer = require('multer');
const upload = multer({dest: __dirname+'/../public/upload/caches/'});

const workController = require('../controllers/workController');



/**
 * 
 * POST api/show/upload
 */
router.post('/upload',  upload.array('image', 9) , workController.uploadWork);


module.exports = router;

//controller(some of it)
exports.uploadWork = function(req, res, next){
    const workData = req.body;
    const {loginUser} = req.session;
    if(loginUser){
        const imageData = req.files ;
        const imgArr = [];
        for(let i=0, len=imageData.length; i<len; i++){
            fs.rename(imageData[i].path,  __dirname + '/../public/upload/works/' + imageData[i].originalname, (err)=> {
                if(err){
                    throw err;
                }
                console.log('uploaded works');
            })
            imgArr.push('http://119.23.227.22:3303/upload/works/'+ imageData[i].originalname)
        }

        // User.findById(loginUser._id, (err, user) => {
        //     if(err) throw err;
        //     avatar = user.avatar
        // })

        const newWork = new Work({
            _id: new mongoose.Types.ObjectId(),
            avatar:  loginUser._id ,
            author: loginUser._id,
            title: workData.title,
            description: workData.description,
            image: imgArr  ,
            contact: loginUser._id,
        });
        newWork.save()
            .then(newWork => {
                User.findById(loginUser._id).populate('works').exec((err, user) => {
                    if(err) throw err;
                    user.works.push(newWork);
                    user.save((err, newUser) => {
                        if(err) throw err;
                        res.status(200).send(newUser.works)
                    })
                })
                // User.findById(loginUser._id, (err, user) => {
                //     if(err) throw err;
                //     user.works.push(newWork._id);
                //     user.save((err, newWork) => {
                //         if(err) throw err;
                //         res.status(200).send(newWork);
                //     });
                // })
                // res.status(200).send(newWork);   
            })
            .catch(err => {
                throw err;
            })
    } else if(loginUser && loginUser.identify !== '1'){
        res.status(403).send('only for personal')
    } else{
        res.status(400).send('please login first')
    }
}

как вы можете видеть, я использую multer для своего промежуточного программного обеспечения для обработки запросов на загрузку изображений, можно загружать изображения с английским именем, но как только я загружаю изображение с китайским именем, серверный терминал выдаст ошибку: cant read propertyoriginalname of undefined. Как я могу установить кодировку nodeJS, чтобы он поддерживал изображения китайских имен?я буду так благодарен, если кто-нибудь сможет мне помочь

...