使用Trello API上传8KB图片遇‘文件过大’错误求助
解决Trello上传小文件却报"File too large"的问题
问题根源
你直接把图片Buffer放在JSON请求体里传给Trello接口,而文件上传需要用multipart/form-data格式,这种错误的请求格式导致Trello无法正确解析文件大小,误判为超出限制。
修复方案
改用FormData封装文件数据,让axios自动处理正确的请求头:
const image = await sharp( "path/qrcode.png" ) .resize(200, 200) .webp({ quality: 20 }) .toFormat("png") .toBuffer(); // 创建卡片 const cardRes = await axios.post( `https://api.trello.com/1/cards?idList={LISTKEYHERE}&key=${TRELLO_KEY}&token=${TRELLO_TOKEN}`, { name: "Create new card", pos: "top", } ); const cardId = cardRes.data.id; // 构建FormData对象 const formData = new FormData(); formData.append("file", image, "qrcode.png"); // 第三个参数为文件名,帮助Trello识别文件类型 // 上传附件 await axios.post( `https://api.trello.com/1/cards/${cardId}/attachments?key=${TRELLO_KEY}&token=${TRELLO_TOKEN}`, formData, { headers: formData.getHeaders(), // 自动生成multipart/form-data请求头 } );
补充说明
- 手动上传能成功是因为前端默认用multipart/form-data格式提交文件,和你代码里的JSON请求格式完全不同。
- 如果要在创建卡片时同时上传附件,同样需要把所有字段(name、pos、file等)都放到FormData里,不要用JSON请求体。
内容的提问来源于stack exchange,提问作者Bao Pham
相关产品推荐
相关产品推荐

