开发者问题收集

流星:Cloudinary

2015-08-10
1361

我正尝试使用 Lepozepo/cloudinary 上传照片

这是我的服务器和客户端配置

服务器:

Cloudinary.config({
  cloud_name: '*****',
  api_key: '******',
  api_secret: '********'
});

客户端:

$.cloudinary.config({
  cloud_name: "*******"
});

我尝试使用表单上传图像

html 表单代码:

<form>
   <input type="file" id="userimage" name="userimage"/>
   <button type="submit">Upload</button>
</form>

这是我的模板事件

Template.signup.events({
    // Submit signup form event
    'submit form': function(e, t){
        // Prevent default actions
        e.preventDefault();

    var file = $('#userimage')[0].files[0];
    console.log(file)
    Cloudinary.upload(file, function(err, res) {
          console.log("Upload Error: " + err);
          console.log("Upload Result: " + res);
        });
    }       
});

当我单击上传按钮时什么也没有发生,我只是收到一个错误

 error: uncaught TypeError: Failed to execute 'readAsDataURL' on `'FileReader': parameter 1 is not of type 'Blob'.`

我该怎么做才能使其正常工作?

3个回答

请使用“_upload_file”代替“upload”。 实际上,“_upload_file”用于“upload”。 但不知何故,当您使用“upload”时,您无法捕获错误和响应

您可以捕获错误和响应。

Meteor 版本:1.1.0.3

lepozepo:cloudinary:1.0.2

Cloudinary._upload_file(files[0], {}, function(err, res) {
  if (err){
    console.log(err);
    return;
  }
  console.log(res);
});
Ko Ohhashi
2015-09-16

我找到了一个解决方法。

  1. Lepozepo/cloudinary Cloudinary.upload 方法文件参数是一个数组,我只需添加以下代码:

    var files = []
    var file = $('#userimage')[0].files[0];
    files.push(file)
    console.log(files)
    

而且它工作正常

Jose Osorio
2015-08-10

我现在会在源代码中修补它,以便也接受单个文件。但是, Cloudinary.upload 函数需要 Cloudinary.upload(files) ,而不是 Cloudinary.upload(files[n])

Marz
2016-08-06