我遇到了错误
<块引用>[ERR_INVALID_ARG_TYPE]:“chunk”参数必须是字符串类型或 Buffer 的一个实例。
尝试将图像从客户端上传到服务器,然后将其存储在 cloudinary:
这是我的后端代码库:
router.post('/upload/image', fileUpload.single('file'), function (req, res, next) {
let streamUpload = (req) => {
return new Promise((resolve, reject) => {
let stream = cloudinary.uploader.upload_stream(
(error, result) => {
if (result) {
resolve(result);
} else {
reject(error);
}
}
);
console.log("Images ", req.files);
streamifier.createReadStream(req.files.buffer).pipe(stream).toString();
console.log("Buffer", req.files.buffer);
}).
catch(error => { throw error; });
};
async function upload(req) {
let result = await streamUpload(req);
console.log(result);
}
upload(req);
});
这是我后端给我的控制台:
Images {
file: {
name: 'me.jpg',
data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 f0 00 f0 00 00 ff e1 03 78 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 09 01 0f 00 02 00 00 00 06 00 00 ... 442191 more bytes>,
size: 442241,
encoding: '7bit',
tempFilePath: '',
truncated: false,
mimetype: 'image/jpeg',
md5: 'a01832d1a390b2bcd7e2b6103d68eaa4',
mv: [Function: mv]
}
}
Buffer undefined
这是我的前端代码库:
const [imageSelected, setImageSelected] = useState("");
const uploadImage = () => {
const formData = new FormData();
formData.append("file", imageSelected);
formData.append("upload_preset", "teammateme");
console.log(imageSelected);
axios.post("/api/v1/users/upload/image", formData)
.then((response) => {
console.log("success");
});
};
// End of Method
return (
<div className="avatar--icon_profile">
<Card className="profile--card_container">
<CardContent>
{picture ? (
<div>
<Avatar
src={picture}
alt="Avatar"
className="avatar--profile_image"
/>
<input type="file"
onChange={(event) => {
setImageSelected(event.target.files[0]);
}}
/>
<button onClick={uploadImage}>
Upload
</button>
</div>
) : (
<AccountCircleIcon className="avatar--profile_image" />
)}
</div>
我该如何解决这个错误?