You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Replit中Discord用户头像下载后无法显示的问题求助

解决Discord头像下载后无法显示的问题

问题出在request模块默认的编码处理逻辑上:它会把响应内容当作UTF-8字符串解析,导致二进制图片数据被转码损坏,最终保存的文件无法正常识别。

以下是两种修复方案:

方案1:获取原始二进制数据

通过设置encoding: null,让request返回未处理的原始二进制Buffer,直接写入文件即可:

const request = require('request')
const fs = require('fs')
app.get("/get-picture", (req, res) => {
  // 配置encoding为null,获取原始二进制数据
  request.get('https://cdn.discordapp.com/avatars/708947170539339816/cfc4742faa6298e4d8d95070136b6d3a.png', { encoding: null }, (error, response, body) => {
    if (error) {
      console.error('下载出错:', error)
      return res.status(500).send('下载失败')
    }
    // 直接写入Buffer,无需额外转码
    fs.writeFileSync('picture.png', body)
    res.send('图片已保存')
  })
})

方案2:使用流(Stream)传输数据

这种方式更适合大文件,避免一次性加载数据占用过多内存:

const request = require('request')
const fs = require('fs')
app.get("/get-picture", (req, res) => {
  const writeStream = fs.createWriteStream('picture.png')
  request.get('https://cdn.discordapp.com/avatars/708947170539339816/cfc4742faa6298e4d8d95070136b6d3a.png')
    .pipe(writeStream)
  
  writeStream.on('finish', () => {
    res.send('图片已保存')
  })
  
  writeStream.on('error', (error) => {
    console.error('写入出错:', error)
    res.status(500).send('保存失败')
  })
})

修复后刷新Replit的文件列表,就能正常预览下载的头像图片了。

内容的提问来源于stack exchange,提问作者Jazzy Armando1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:30:57