【问题标题】:How to connect client side file input to server side cloudinary upload?如何将客户端文件输入连接到服务器端云上传?
【发布时间】:2016-11-20 01:56:55
【问题描述】:

我们正在处理云端上传。我们编写了两部分,服务器上的 cloudinary 方法通过 cloudinary npm 包和客户端上的另一个组件从输入中获取文件。

当我们将此文件传递给服务器时,cloudinary 上传方法不起作用。如果我们只是使用来自网络的普通图像,则该方法可以正常工作,这意味着该方法可以正常工作。

所以看来我们仍然需要弄清楚如何正确地将文件从客户端发送到服务器端方法。不幸的是,云文档没有明确的描述如何做到这一点,他们所说的只是像“your_image_file.jpg”这样的路径。路径的问题是,由于安全原因,无法从浏览器端获取确切的图像路径。到目前为止,您是如何做到的?请注意,我们不想使用客户端上传和/或 jQuery 插件,因为我们的应用程序中不使用 jQuery。

【问题讨论】:

  • 我不知道 cloadinary,但我认为您不能使用原始 Meteor 进行直接文件上传,因为您无法进行直接形式的 POST,但这并不是什么大问题,因为有一些解决方法。一种解决方法是设置 Meteor.method 以允许您将文件内容“流式传输”到您的服务器。另一种方法是编写一个原始应用程序来仅处理文件上传位。您甚至可以直接绑定到 Meteor 中的底层节点服务器。
  • 你有没有解决过这个问题,因为我遇到了同样的问题......?

标签: node.js meteor cloudinary


【解决方案1】:

(带有来自 Cloudinary 示例项目的链接。)

设置输入标签(见link):

<input id="photo_image" name="image" type="file" />

在服务器端,将文件上传到 cloudinary(见link):

var imageFile = req.files.image.path;
// Upload file to Cloudinary
cloudinary.uploader.upload(imageFile, {tags: 'express_sample'})
        .then(function (image) {
            console.log('** file uploaded to Cloudinary service');
            console.dir(image);
            photo.image = image;
            // Save photo with image metadata
            return photo.save();
        })
        .then(function (photo) {
            console.log('** photo saved')
        })
        .finally(function () {
            res.render('photos/create_through_server', {photo: photo, upload: photo.image});
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    相关资源
    最近更新 更多