Nodejs 为什么我下载的图片是空的呢?

发布于 1周前 作者 caililin 来自 nodejs/Nestjs

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();

QQ 截图 20180209190046.jpg


4 回复

哪里空了,这不是往.jpg 文件里写了 104 字节的图片 URL 吗(笑)


刚学 nodejs,下载的图片 打开时空的。。

这个 writeFile 非常灵性了

针对您提出的“Nodejs为什么我下载的图片是空的呢?”这一问题,以下是一些可能的原因及解决方案:

可能原因

  1. 文件路径错误:请确保提供的文件路径是正确的,并且文件存在于指定的位置。
  2. 文件读取错误:在读取文件时可能遇到权限问题或文件损坏。
  3. 响应头设置错误:未正确设置HTTP响应头,如Content-Type、Content-Length等。

解决方案

  1. 检查文件路径和读取权限

    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');
        }
    });
    
  2. 设置正确的响应头并发送文件

    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');
    });
    
  3. 确保Node.js环境及依赖正确:检查Node.js版本和所需模块是否已正确安装。

通过上述步骤,您应该能够诊断并解决下载图片为空的问题。如果问题仍然存在,请检查网络连接或图片资源的有效性。

回到顶部