Nodejs 为什么我下载的图片是空的呢?
Nodejs 为什么我下载的图片是空的呢?
var http = require(‘http’);
var querystring = require(‘querystring’);
var fs = require(‘fs’);
var data = ‘{“uid”:“502acbd07fc640768ac3621bfaa55be4”,“pageSize”:10,“pageIndex”:0}’;
var moment = require(‘moment’);
var shijian = moment().format(‘YYYYMMDD’)
console.log(shijian);
var options = {
hostname: ‘016888.net’,
port: 80, //端口号 https 默认端口 443,http 默认的端口号是 80
path: ‘/personProduct/getPersonProductByType.action’,
method: ‘POST’,
headers: {‘Connection’: ‘keep-alive’,‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36’,
‘Content-Type’: ‘application/json;charset=UTF-8’,
‘Accept’: ‘application/json, text/javascript’,
‘Content-Length’: 70}
};
var req=http.request(options,function(res){
res.setEncoding(‘utf-8’);
var responseString = '';
res.on('data', function(data) {
responseString += data;
});
res.on('end', function() {
var resultObject = JSON.parse(responseString);
for(var i=0;i < resultObject.data.rows.length;i++){
var r=resultObject.data.rows[i];
for (var b = 0; b < r.pics.picList.length; b++) {
console.log(r.pics.picList[b]+'保存完成');
fs.writeFile('./imgs/'+shijian+'_'+r.code+'_'+b+'.jpg',r.pics.picList[b],'binary', function (err) {
if (err) throw err;
});
}
}
});
req.on('error', function(e) {
console.log('-----error-------',e);
});
});
req.write(data);
req.end();
哪里空了,这不是往.jpg 文件里写了 104 字节的图片 URL 吗(笑)
刚学 nodejs,下载的图片 打开时空的。。
针对您提出的“Nodejs为什么我下载的图片是空的呢?”这一问题,以下是一些可能的原因及解决方案:
可能原因
- 文件路径错误:请确保提供的文件路径是正确的,并且文件存在于指定的位置。
- 文件读取错误:在读取文件时可能遇到权限问题或文件损坏。
- 响应头设置错误:未正确设置HTTP响应头,如Content-Type、Content-Length等。
解决方案
-
检查文件路径和读取权限:
const fs = require('fs'); const filePath = '/path/to/your/image.jpg'; fs.access(filePath, fs.constants.R_OK, (err) => { if (err) { console.error('File not found or read permission denied'); } else { console.log('File is accessible'); } });
-
设置正确的响应头并发送文件:
const http = require('http'); http.createServer((req, res) => { const fileStream = fs.createReadStream(filePath); res.setHeader('Content-Type', 'image/jpeg'); res.setHeader('Content-Length', fs.statSync(filePath).size); res.setHeader('Content-Disposition', 'attachment; filename="image.jpg"'); fileStream.pipe(res); }).listen(3000, () => { console.log('Server is running on port 3000'); });
-
确保Node.js环境及依赖正确:检查Node.js版本和所需模块是否已正确安装。
通过上述步骤,您应该能够诊断并解决下载图片为空的问题。如果问题仍然存在,请检查网络连接或图片资源的有效性。