最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在实际保存之前,如何使用Cloud Code读取保存到Parse服务器的文件?

运维笔记admin15浏览0评论

在实际保存之前,如何使用Cloud Code读取保存到Parse服务器的文件?

在实际保存之前,如何使用Cloud Code读取保存到Parse服务器的文件?

我正在尝试使用Cloud Code检查用户提交的图像是否属于受支持的文件类型而不是太大。

我知道我需要在服务器端执行此验证,我认为我应该使用beforeSave使用Cloud Code执行此操作 - 该文档甚至还有一个关于数据验证的具体示例,但它没有解释如何处理文件而我不能想办法。

我已经尝试了保存文件的文档化方法,即。

file = fileUploadControl.files[0];
var parseFile = new Parse.File(name, file);
currentUser.set("picture", parseFile);
currentUser.save();

在云代码中,Parse.Cloud.beforeSave(Parse.User, (request, response) => { // code here });

但是1.这仍然实际上将文件保存在我的服务器上,对吗?我想首先检查文件大小,以避免保存太多大文件...

2.即便如此,我也不知道在beforeSave回调中该怎么做。我似乎只能访问已保存图像的URL(证明它已被上传),并且在决定是否继续附加之前,必须执行另一个https请求以检查文件大小和类型似乎非常违反直觉。文件到User对象。

(我目前正在使用remote-file-sizefile-type来检查上传文件的大小和类型,但这里也没有成功)。

我也试过调用一个Cloud函数,但感觉我做的不对,而且我遇到了同样的问题。我可以调用Cloud函数并将保存的ParseFile作为参数传递,然后我知道如何使用masterkey从Cloud Code将其保存到User对象,但是如上所述它仍然涉及将文件上传到服务器然后重新 - 使用其URL获取它。

我在这里错过了什么吗?是否有办法在Parse.File上执行类似于beforeSave的操作,然后如果文件不符合某些条件则停止保存文件?

干杯。

回答如下:

如果必须对文件执行某些操作,则parse允许您覆盖文件适配器以处理文件操作。

您可以指明要在Parse Server实例中使用的文件适配器:

    var FSStoreAdapter = require('./file_adapter');
    var api = new ParseServer({
      databaseURI: databaseUri ,
      cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
      appId: process.env.APP_ID,
      filesAdapter: fs_store_adapter, // YOUR FILE ADAPTER
      masterKey: process.env.MASTER_KEY, //Add your master key here. Keep it secret!
      serverURL: "https://yourUrl",  // Don't forget to change to https if needed
      publicServerURL: "https://yourUrl",
      liveQuery: {
        classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
      }
      maxUploadSize: "500mb"  //you will now have 500mb limit :)
    });

也就是说,您也可以在实例中指定maxUploadSize,如最后一行所示。

发布评论

评论列表(0)

  1. 暂无评论