【问题标题】:Can't upload image to cloudinary无法上传图片到云端
【发布时间】:2017-02-07 03:20:18
【问题描述】:

你能告诉我,当我尝试将图像上传到 cloudinary 时,我做错了什么?

app.js 我不需要将图像存储在服务器上,因此我将其存储在内存中。 var cloudinary = require('cloudinary'); cloudinary.config({ cloud_name: 'hidden', api_key: 'hidden', api_secret: 'hidden' }); var multer = require('multer'); var storage = multer.memoryStorage() var upload = multer({ storage: storage })

网站形式(翡翠/哈巴狗) form(action="/?_csrf="+csrfToken method="post" enctype='multipart/form-data') input(type="file" name="avatar") input(type="submit" value="upload")

应用帖子

   app.post('/', upload.single('avatar'), function(req, res, next){ 
  
     console.log('Should be undefined:', req.file.path);  //yes
      console.log('Should be the buffer:', req.file.buffer); //yes
      cloudinary.uploader.upload(req.file.path, function(result) {           console.log(result) });
    });

我得到错误 { error: { message: 'Missing required parameter - file', http_code: 400 } }

【问题讨论】:

    标签: node.js express cloudinary multer


    【解决方案1】:

    我无法直接从我的表单上传到服务器,但我使用了一个技巧,首先我将文件存储在磁盘上,然后尝试上传我的文件。 我使用 heroku 托管,这意味着我的文件将在 30 分钟后被删除。这意味着我不会有任何存储问题。

    //#1 i collect data into storage ./image/filename
    
    await file.mv('./image/' + filename, async (err) => {
            if (err) {
                console.log("server'/upload' : faild to upload error =>" + err)
                res.send('Save files => error : ' + err)
    
            }
            else {
                try {
                    const client = await pool.connect()
                    //await client.query(`INSERT INTO test_table(id, name) VALUES(${1},'${"test"}')`)
                    const result = await client.query(`INSERT into post(musicname,artistname,price, music, picture)
                    VALUES ('${textName}','${textArtist}','${textPrice}', '${musicname}','${filename}')`);
                    res.send("server'/upload' : inserting new Data is Done.")
                    console.log("server'/upload' : inserting new Data is Done.")
                    client.release();
                  } catch (err) {
                    console.error(err);
                    res.send("Error " + err);
                  }
    
            }
        })
    
    
    
        await fileMusic.mv('./music/' + musicname, (err) => {
            if (err) {
                console.log(err)
                res.send('save files => error')
    
            }
        })
    //#2 uplaoding collected data into cloudinary
        await cloudinary.v2.uploader.upload('./image/' + filename, {public_id: `${filename}`}, 
        function(error, result){
            result;
            console.log(result.url, error)
        });
    

    【讨论】:

      【解决方案2】:
      i find out how (just use Datauri):
      

          var dUri = new Datauri();
          dUri.format(path.extname('TEST').toString(), req.file.buffer);
      
          cloudinary.uploader.upload(dUri.content, function (err, result) {
        if (err) {
          console.log(err);
        } else {
          console.log(result);
        }
      });

      【讨论】:

        猜你喜欢
        • 2016-09-30
        • 2017-05-20
        • 1970-01-01
        • 2017-12-01
        • 2020-11-15
        • 2015-07-14
        • 2018-06-14
        • 2014-10-22
        • 1970-01-01
        相关资源
        最近更新 更多