亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過ajax發送圖像到multer

通過ajax發送圖像到multer

LEATH 2021-11-04 17:46:22
我正在使用 Multer 將圖像文件上傳到我的節點服務器,它總是返回給我 undefined 使用 ajax 發送圖像。阿賈克斯:image = $("#input-file-img").val()                const data = new FormData();                 data.append("image", image);                 $.ajax({                    url: '/uploadfile/' + userName,                    method: 'POST',                    async: false,                    processData: false ,                    contentType: false,                    data: data                })上傳.jsvar storage = multer.diskStorage({  destination: function (req, file, cb) {    cb(null, 'uploads')  },  filename: function (req, file, cb) {    cb(null, file.originalname)  }})var upload = multer({ storage: storage })router.post('/uploadfile/:userName', upload.single('image'), async (req, res, next) => {  let user = await User.findOne({ userName: req.params.userName })  let file = req.file  let fileName = file.filename  let path = variables.kepler + 'uploads/' + fileName  user.image = path  await user.save()  if (!path) {    const error = new Error('Please upload a file ...')    error.httpStatusCode = 400    return next(error)  }  if (path) {    return res.status(200).send({      status: '200',      message: 'Operation completed successfully ...',      data: user,      path    })  }})我用控制臺檢查了圖像值,它顯示 C:\fakepath\Capture d'écran de 2019-09-19 11-33-59.png'將不勝感激任何幫助。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

解決了?。?!

通過獲取價值

image = $("#input-file-img").val()

這意味著我正在將類型字符串作為文件發送

所以我不得不把它改成

image = $('#input-file-img')[0].files[0]

一切都很好


查看完整回答
反對 回復 2021-11-04
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

我認為你的服務器端代碼很好,如果我修改客戶端代碼如下,一切正常,我們最終在 /uploads 文件夾中得到圖像:


function base64toBlob(base64, mimeType) {

    const bytes = atob(base64.split(',')[1]);

    const arrayBuffer = new ArrayBuffer(bytes.length);

    const uintArray = new Uint8Array(arrayBuffer);

    for (let i = 0; i < bytes.length; i++) {

        uintArray[i] = bytes.charCodeAt(i);

    }

    return new Blob([ arrayBuffer ], { type: mimeType });

}


function submitForm() {         

    const imgRegEx = /^data:(image\/(gif|png|jpg|jpeg))/;

    const imageData = $('#input-file-img').attr('src');

    const mimeType = imgRegEx.exec(imageData)[1];

    const blob = base64toBlob(imageData, mimeType);


    const fileExt = mimeType.replace("image/", "");

    const fileName = "test-image." + fileExt; // Change as appropriate..


    const data = new FormData();

    data.append("image", blob, fileName);


    $.ajax({

        url: '/uploadfile/' + userName,

        method: 'POST',

        async: false,

        processData: false ,

        contentType: false,

        data: data

    })

}


查看完整回答
反對 回復 2021-11-04
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號