ExpressJS部署Vercel后上传Vercel Blob图片损坏仅15B问题
ExpressJS服务上传图片到Vercel Blob后文件损坏(仅15B)
部署在Vercel上的ExpressJS服务(Node版本:v21.7.1),通过Postman以form-data格式发送请求上传图片到Vercel Blob时,返回状态码200,但上传的图片损坏且仅为15B。本地和Vercel环境测试均出现相同问题,曾偶然成功一次但忘记操作步骤。
1. PUT请求方式
路由代码
import multer from "multer"; const upload = multer(); router.route('/:id').put(upload.single('photo'), userController.updateUser)
控制器代码
export const updateUser = catchAsync(async (req, res, next) => { try{ if(req.file){ const filename = `user-${req.user.id}-${Date.now()}.jpeg`; console.log(req.file); const result = await put(filename, req.file, { access: 'public', token : process.env.BLOB_READ_WRITE_TOKEN, addRandomSuffix: false, },); console.log({result}); } //db stuff... } catch (err) { res.status(400).json({ status: 'error', message: err.message, }); } });
控制台输出
{ fieldname: 'photo', originalname: '_ (20).jpeg', encoding: '7bit', mimetype: 'image/jpeg', buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 06 04 05 06 05 04 06 06 05 06 07 07 06 08 0a 10 0a 0a 09 09 0a 14 0e 0f 0c ... 34195 more bytes>, size: 34245 } { result: { url: 'https://jjsfgfmzoftauon7.public.blob.vercel-storage.com/user-65e31000c48a3a97e1a5147a-1711101529160.jpeg', downloadUrl: 'https://jjsfgfmzoftauon7.public.blob.vercel-storage.com/user-65e31000c48a3a97e1a5147a-1711101529160.jpeg?download=1', pathname: 'user-65e31000c48a3a97e1a5147a-1711101529160.jpeg', contentType: 'image/jpeg', contentDisposition: 'inline; filename="user-65e31000c48a3a97e1a5147a-1711101529160.jpeg"' } }
2. POST请求方式
路由代码
router.post('/uploadPhoto', upload.single('photo'), userController.uploadFile);
控制器代码
export const uploadFile = async (req, res) => { try { const file = req.file; console.log({file}); const blob = await put(file.originalname, file, { access: 'public' , token : process.env.BLOB_READ_WRITE_TOKEN, }); console.log({blob}); res.json({blob}); } catch (err) { res.status(500).json({ error: 'An error occurred while uploading the file.' }); } }
控制台输出
{ file: { fieldname: 'photo', originalname: '_ (13).jpeg', encoding: '7bit', mimetype: 'image/jpeg', buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 06 04 05 06 05 04 06 06 05 06 07 07 06 08 0a 10 0a 0a 09 09 0a 14 0e 0f 0c ... 21792 more bytes>, size: 21842 } } { blob: { url: 'https://jjsfgfmzoftauon7.public.blob.vercel-storage.com/_%20(13)-uUVosoz5TYonKwqvrrso3dWtPjX8ON.jpeg', downloadUrl: 'https://jjsfgfmzoftauon7.public.blob.vercel-storage.com/_%20(13)-uUVosoz5TYonKwqvrrso3dWtPjX8ON.jpeg?download=1', pathname: '_ (13).jpeg', contentType: 'image/jpeg', contentDisposition: 'inline; filename="_%20(13).jpeg"' } }
备注
本地和Vercel环境测试均出现相同问题,曾偶然成功一次但已忘记操作步骤,若需更多信息请告知。
内容的提问来源于stack exchange,提问作者fres
相关产品推荐
相关产品推荐

