【发布时间】:2021-12-31 08:46:14
【问题描述】:
我正在尝试实现一个功能,使用 Express.js 作为 api 服务器和客户端中的 React.js 上传图像。
在 api 服务器中,我定义了一个上传图片的路由,例如:
userRoute.js
module.exports = app => {
const User = require("../controllers/userController")
let router = require("express").Router()
const authJWT = require("../middleware/authJWT")
const upload = require("../utils/multer")
// endpoint is http://localhost:8800/api/users/profilePicture
router.post(
"/profilePicture",
upload.single("image"),
authJWT,
User.uploadProfilePicture
)
// some other routes
app.use("/api/users", router)
}
在客户端,我使用axios来处理请求
agent.ts
// the axios instance with the api endpoint
const axiosInstance = axios.create({
baseURL: "http://localhost:8800/api",
})
// app user-related requests
const AppUser = {
// I use this to upload image to api server
uploadProfilePicture: (image: Blob) => {
const formData = new FormData()
formData.append("image", image)
return axios.post<Image>("profilePicture", formData, {
headers: { "Content-type": "multipart/form-data" },
})
},
// other requests ...
}
当我点击上传文件按钮,查看inspect控制台时,上传文件url为http://localhost:3001/profiles/profilePicture,不是服务器url,当然这个路由和我在服务器中定义的路由不一样APIhttp://localhost:8000/users/profilePicture。所以它返回 404 not found。
【问题讨论】:
-
你必须使用
axiosInstance.post -
@Mani Opps!我忘了。谢谢提醒!!