HTTP 请求图像并在 Parse Cloud Code 中保存到文件系统

HTTP Request Image and save to file system in Parse Cloud Code

我正在测试自托管的解析服务器示例,我想请求一个图像并将其保存在我的服务器文件系统中。 到目前为止我的代码:

Parse.Cloud.define('getImage', function(request, response) {
  
  var fs = require('fs');
  var testURL = 'http://example.com/test.jpg';

  Parse.Cloud.httpRequest({
    url: testURL,
    method: 'GET',
    success: function(httpResponse) {
      
      var imageBuffer = httpResponse.buffer;
      fs.writeFile("/mypath/processed.jpg", imageBuffer, function() {
        console.log('Saved to disk');
      });

      response.success('Saved image');
    },
    error: function(httpResponse) {
      response.error('Error getting image');
    }
  });
});

问题: 文件已创建,但大小几乎翻倍,无法作为图像文件打开。 httpResponse.buffer 似乎返回了乱码。

我还测试了将 imageBuffer.toString('base64') 作为参数传递给 writeFile 但没有成功。我认为这只是我对如何处理图像缓冲区以将其写入 jpg 文件的一个简单误解。有人可以帮助或指导我找到一个有效的例子吗?

找到了解决方法,因为 Parse.Cloud.httpRequest 目前似乎无法在自托管解析服务器上正常工作。

我刚刚使用了 require('request'):

var httpRequest = require('request');
var fs = require('fs'); 

var url = 'http://www.example.com/test.jpg';

// simple HTTP GET request for the image URL
httpRequest.get({url: url, encoding: 'binary'}, function (err, httpResponse, body) {
  
  fs.writeFile('/mypath/processed.jpg', body, 'binary', function(err) {
    if(err) { 
      console.log('Error: '+err);
    } else {  
      console.log('Saved image');
    }
  }); 
});

这对我有用,但我很想知道为什么 Parse.Cloud.httpRequest 不起作用?