Javascript 无法使用node.js和request保存远程映像
我想用node.js和。到目前为止,我有一个简单的代码:Javascript 无法使用node.js和request保存远程映像,javascript,node.js,request,Javascript,Node.js,Request,我想用node.js和。到目前为止,我有一个简单的代码: var request = require('request'); var fs = require('fs'); request('http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg', function(error, response, body) { // further logic that decides
var request = require('request');
var fs = require('fs');
request('http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg', function(error, response, body)
{
// further logic that decides
// whether or not the image will be saved
fs.writeFile('downloaded.jpg', body, function(){});
});
但它不起作用。图像总是损坏的。我假设这是一个编码错误,但我不知道如何解决这个问题。以下是我如何使用
流和管道,(我使用的是express
,但您可能不需要它)
var fs = require('fs'),
request = require('request'),
url='http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg';
request(url).pipe(fs.createWriteStream('downloaded.jpg'));
当我使用node server.js
运行并点击urllocalhost:3000/image
时,它将下载文件并将其保存到基本目录中的porcupine.png
。我在请求页面上看到了使用流媒体变量的示例。虽然这通常是可行的,但我需要使用回调的变量,因为我运行了一些进一步的逻辑来决定是否保存图像。但是谢谢你的回答!这是很多我没有要求的东西,但我相信这会对某人有所帮助。谢谢分享!
var request = require('request'),
fs = require('fs'),
url = 'http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg';
request(url, {encoding: 'binary'}, function(error, response, body) {
fs.writeFile('downloaded.jpg', body, 'binary', function (err) {});
});
var express = require('express');
var app = express();
var filesystem = require('fs');
var https = require('https');
var download = function(url, dest, cb) {
var file = filesystem.createWriteStream(dest);
var request = https.get(url, function(httpResponse) {
httpResponse.pipe(file);
file.on('finish', function() {
console.log("piping to file finished")
file.close(cb); // close() is async, call cb after close completes.
});
}).on('error', function(err) { // Handle errors
filesystem.unlink(dest); // Delete the file async. (But we don't check the result)
if (cb) cb(err.message);
});
};
app.get('/image', (req, res) => {
download('https://lastfm-img2.akamaized.net/i/u/64s/15cc734fb0e045e3baac02674d2092d6.png',
'porcupine.png',
() => {console.log("downloaded to porcupine.png")})
})