无法将图片上传到cloudinary

时间:2016-09-29 00:13:00

标签: node.js express cloudinary multer

你可以告诉我,我做错了什么,试图将图片上传到cloudinary?

app.js 我不需要在服务器上存储图像,所以我将它存储在内存中。 .page.hentry { padding: 45px; }

网站表格(玉/哈巴狗) 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 })

App post


    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) }); });

2 个答案:

答案 0 :(得分:1)

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);
  }
});

答案 1 :(得分:0)

我无法直接从表单上载到服务器,但是我首先使用了一个技巧,将文件存储在磁盘上,然后尝试上载文件。 我使用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)
    });
相关问题