将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)

Posted

技术标签:

【中文标题】将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)【英文标题】:Change URLs into files (Parse.com using Javascript CloudCode) 【发布时间】:2015-08-03 08:15:13 【问题描述】:

我需要将一些图像链接(存在于类中的 URL 链接)批量更改为图像文件(Parse.com 托管)。

云代码(显然)是如何做到的。

我已按照文档 here 进行操作,但没有任何成功。

我想做的是:

    从“COLUMN_1”获取 URL 链接 将其设为文件 将文件上传到“COLUMN_1”(覆盖现有 URL)。如果这很危险 - 可以将其上传到新列(“COLUMN_2”)。 下一行重复

这段代码不起作用(这是我第一次使用 JS):

imgFile.save().then(function () 
    object.set("COLUMN_1", imgFile);
    return object.save();
).then(function (CLASSNAME) 
    response.success("saved object");
, function (error) 
   response.error("failed to save object");
);

任何人都可以推荐如何做到这一点?

【问题讨论】:

【参考方案1】:

好的-这对其他尝试的人都有效。

    Parse.Cloud.job("convertFiles", function(request, status)  //Cuts the rundata out of poor runs
    function sleep(milliseconds) 
      var start = new Date().getTime();
      for (var i = 0; i < 1e7; i++) 
        if ((new Date().getTime() - start) > milliseconds)
          break;
        
      
    

    // Tell the JS cloud code to keep a log of where it's upto. Manually create one row (in class "debugclass") to get an object Id
    Parse.Cloud.useMasterKey();

    var Debug = Parse.Object.extend("debugclass");
    var queryForDebugObj = new Parse.Query(Debug);
    queryForDebugObj.equalTo("objectId", "KbwwDV2S57");

    // Query for all users
    // var queryForSublist = new Parse.Query(Parse.Object.extend("gentest"));


    queryForDebugObj.find(
        success: function(results) 
            var debugObj = results[0];

            var processCallback = function(res) 
                    var entry = res[0];
                    var debugObj = results[0];
                    debugObj.set("LastObject", entry.id);
                    debugObj.save();

                    Parse.Cloud.httpRequest(
                        url: entry.get("smallImage2"),
                        method: "GET",
                        success: function(httpImgFile) 
                        
                            console.log("httpImgFile: " + String(httpImgFile.buffer));
                            var imgFile = new Parse.File("picture.jpg", base64: httpImgFile.buffer.toString('base64'));

                            imgFile.save().then(function () 
                                console.log("2");
                                entry.set("smallImage1", imgFile);
                                entry.save(null, 
                                  success: function(unused) 
                                    debugObj.increment("itemDone");
                                    sleep(20);
                                    res.shift();
                                    if (res.length === 0) 
                                        process(entry.id);
                                        return;
                                    
                                    else 
                                        processCallback(res);
                                    


                                  ,
                                  error: function(unused, error) 
                                    response.error("failed to save entry");
                                  
                                );    
                            );                                             
                        ,
                        error: function(httpResponse) 
                        
                            console.log("unsuccessful http request");
                            response.error(responseString);
                        
                    );
            ;
            var process = function(skip) 
                var queryForSublist = new Parse.Query("genpants");

                if (skip) 
                    queryForSublist.greaterThan("objectId", skip);
                    console.error("last object retrieved:" + skip);
                
                queryForSublist.ascending("objectId");
                queryForSublist.find().then(function querySuccess(res) 
                    processCallback(res);
                , function queryFailed(reason) 
                    status.error("query unsuccessful, length of result " + result.length + ", error:" + error.code + " " + error.message);
                );
            ;

            process(debugObj.get("LastObject"));

        ,
        error: function(error) 
            status.error("xxx Uh oh, something went wrong 2:" + error + "  " + error.message);
        
    );  
);

【讨论】:

以上是关于将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)的主要内容,如果未能解决你的问题,请参考以下文章

将 NSURL 基本 URL 更改为另一个基本 URL

Parse.com 禁用推送通知通知

当SSL终止后,WSDL绑定URL将协议更改为HTTP

我已经使用 springdoc 安装了 OpenAPI 3,但是 URL 很奇怪。我可以将其更改为预期值吗?

使用 .htaccess 将 web Url 更改为另一个 Url? [复制]

如何在 Parse.com 中使用本地数据存储