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 不起作用?
我正在测试自托管的解析服务器示例,我想请求一个图像并将其保存在我的服务器文件系统中。 到目前为止我的代码:
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 不起作用?