流星:多云

Meteor: Cloudinary

我正在尝试使用 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'.`

我该怎么做才能完成这项工作?

我想办法解决了

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

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

而且效果很好

请使用“_upload_file”代替"upload"。 “_upload_file”实际用在 "upload" 中。 但是不知何故,当你使用 "upload"

时你无法捕获错误和响应

你可以捕获错误和响应。

流星版本: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);
});

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