我有两个API端点用于图像上传,一个用于本地服务器(http://localhost:8000/api/image/upload),另一个用于实时服务器(https://complete-auth-api.vercel.app/api/image/upload)。我遇到了一个问题,特别是在实时服务器上,我收到一个500内部服务器错误,并伴随错误消息:
import express from "express";
import {addimage, getimage } from '../controller/addimage.js'
import multer from "multer";
const router=express.Router()
const storage = multer.diskStorage({
destination:function(req,file,cb) {
return cb(null,'./uploadphoto')
},
filename:function(req,file,cb){
return cb(null,`${Date.now()}_${file.originalname}`)
}
})
const upload = multer({storage:storage})
// upload a image
// http://localhost:8000/api/image/upload
router.post('/upload',upload.single('photo'),addimage)
router.get('/getimage',getimage)
export default router
addimage.js
export const addimage=(req,res)=>{
console.log("hello image")
console.log(req.file)
try {
req.app.locals={
photo:req.file.filename,
}
console.log("image uploaded")
return res.send(req.file)
} catch (error) {
console.log("image uploading failed")
return res.send(error)
}
}
export const addproduct=async(req,res)=>{
const headerToken=req.headers.authorization
try {
const token=headerToken?.split(" ").pop()
const decode= jwt.verify(token,process.env.ACCESSTOKEN)
// const decode= jwt.verify(token,process.env.REFRESHTOKEN)
if(decode.role==='admin'){
try {
const photo=req.app.locals.photo
if(photo===undefined){
return res.send("please select an image")
}
const data=req.body
data.product_image=photo
const new_data=await ProductModel(data)
new_data.save()
return res.send("product added successfully")
} catch (error) {
}
}
return res.send("you are not a authorized user")
} catch (error) {
return res.send(error.message)
}
}
字符串
错误:ENOENT:没有这样的文件或目录,打开'uploadphoto/1704163351625_product-1.jpg'
问:如果我能够在本地创建上传目录,但在Vercel的无服务器环境中创建目录时受到限制,我如何在Vercel上处理图像上传?
我调查了亚马逊和Flipkart网站,发现他们提供图片URL。
**Q.在本地上传图片时,我使用Multer生成一个唯一的文件名,然后将该文件名存储在MongoDB中。但我不确定为上传的图片创建URL的过程。在Web开发场景中,如何为存储在MongoDB中的图片生成URL?**x1c 0d1x我想了解将图像上传到服务器的机制,特别是使用MongoDB的服务器,并为客户端检索它。
我接触过Vercel Blob Storage,但我很难掌握它的功能。您能否详细介绍Vercel Blob Storage的工作原理以及如何在Web开发环境中使用它?
1条答案
按热度按时间lmyy7pcs1#
我想了解将图像上传到服务器的机制,特别是使用MongoDB的服务器,并为客户端检索它。
序列将类似于下面
type=file
的input
标签从浏览器上传图像enctype=multipart/form-data
提交到服务器<img src='YOUR-FILE-STORAGE-LOCATION/UNIQUE-FILENAME' />
访问检查此以获取有关如何将图像上传到Vercel Blob存储的更多详细信息-https://vercel.com/docs/storage/vercel-blob/quickstart#client-uploads