Meteor:Cloudinary

5
我正在尝试使用Lepozepo / Cloudinary上传照片。
这是我的服务器和客户端配置。
服务器: ```python ``` 请注意:以上内容可能是代码,具体意义可能需要更多上下文信息进行理解。
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个回答

3
请使用"_upload_file"代替"upload"。 实际上,在"upload"中使用了"_upload_file"。 但是,当您使用"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);
});

可能Lepozepo做了一些改变,但还是谢谢:)。我的方法对我来说仍然有效(我最近没有运行meteor update)。 - Jose Osorio

2
我找到了解决方法。
  1. Lepozepo/cloudinary Cloudinary.upload method file parameter is an array, I just add this code:

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

它工作正常。


我无法通过这种方式获取响应对象。我无法获取photo_id或图像URL。我该如何获取它们? - anon
我有同样的问题。我可以将文件上传到Cloudinary,但是我无法捕获回调结果。 - Ko Ohhashi
我可以使用“_upload_file”而不是“upload”来捕获错误和响应。 - Ko Ohhashi

0

我现在会在源代码中打补丁,以便接受单个文件。但是,Cloudinary.upload 函数期望的是 Cloudinary.upload(files) 而不是 Cloudinary.upload(files[n])


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接