Javascript 我想使用Next.js API路由将图像上载到Imgur

Javascript 我想使用Next.js API路由将图像上载到Imgur,javascript,next.js,imgur,Javascript,Next.js,Imgur,我试图创建一个过程,上传一个图像,预览一次,然后上传到Imgur,如果图像正常 代码如下 const[img,setImg]=useState([] const previewImg=({target:{files}})=>{ 如果(img.length>5)返回 const reader=new FileReader() reader.onload=({target:{result}})=>{ setImg((img)=>[…img,{id:generateID(),src:result}]

我试图创建一个过程,上传一个图像,预览一次,然后上传到
Imgur
,如果图像正常


代码如下

const[img,setImg]=useState([]
const previewImg=({target:{files}})=>{
如果(img.length>5)返回
const reader=new FileReader()
reader.onload=({target:{result}})=>{
setImg((img)=>[…img,{id:generateID(),src:result}])
}
reader.readAsDataURL(文件[0])
}
const uploadImugr=async(e)=>{
e、 预防默认值();
const base64=img[0].src.toString().replace(/data:.*\/.*;base64,/,'');
const res=wait fetch('/api/upload/'{
方法:“POST”,
正文:base64,
});
log(wait res.json());
}
返回(
{img.length>0&&img.map((项目)=>{
返回}
}
上传Imgur
)
下面是next.js的API路由。

const uploadImugrAPI=async(请求:NextApiRequest,回复:nextapireresponse)=>{
const formData=new formData();
 formData.append('图像',请求正文);
const resImgur=等待提取(“https://api.imgur.com/3/upload", {
方法:“POST”,
标题:{
授权:“客户端ID MY-CLIEND-ID”,
},
正文:formData,
})
res.status(200.json)(resImgur.json());
};
导出默认上传imugrapi;
执行上述API时,将显示以下错误消息

POST http://localhost:3000/api/upload 500 (Internal Server Error)
Uncaught (in promise) SyntaxError: Unexpected token I in JSON at position 0
我不熟悉Next.js和外部API,所以我不确定在Google上搜索什么关键字来解决这个问题。
请帮帮我。
多谢各位


添加 当我尝试使用
Postman
时,我能够通过传递二进制文件将图像上传到Imugr。
因此,我对代码进行了如下更改,以传递一个二进制文件,而不是base64,并尝试了它

const[imgArray,setImgArray]=useState([]
+const[srcArray,setSrcArray]=useState([]
const uploadImg=({target:{files}})=>{
如果(imgaray.length>5)返回
+setImgArray((imgArray)=>[…imgArray,文件[0]]
const reader=new FileReader()
reader.onload=({target:{result}})=>{
const uploadImgSrc=result.toString()
setSrcArray((srcArray)=>[
…src数组,
{id:generateID(),src:uploadImgSrc.toString()},
])
formRef.current.inputImg.value=''
}
reader.readAsDataURL(文件[0])
}
const uploadImugr=async(e)=>{
e、 预防默认值();
+const formData=new formData();
+formData.append(“图像”,imgArray[0])
const res=wait fetch('/api/upload/'{
方法:“POST”,
正文:formData,
});
log(wait res.json());
}
结果是控制台中显示以下错误

POST http://localhost:3000/api/upload 500 (Internal Server Error)
Request failed with status code 500

谢谢你指出这一点。我已经修复了代码。(错误消息没有改变。)对Imgur API的请求成功了吗?您得到了预期的响应吗?请求失败,我们没有得到预期的响应,我们希望在控制台中看到一个json,其中包含Imgur API文档中描述的上传图像的信息。然后,您的请求出现了问题。您能从Pos成功地执行相同的请求吗tman?在Postman中,我通过在body的“image”字段中指定图像文件得到了预期的响应!但是,在body的“image”字段中输入base64代码返回了400错误。