Une fois que l'utilisateur a téléchargé le fichier, les données du formulaire ne sont pas téléchargées, ce qui entraîne l'accumulation d'images non valides

Solution :
créez d'abord un dossier temporaire temporaire, stockez-le dans le dossier temporaire lorsque l'utilisateur télécharge le fichier, puis renvoyez cette URL au frontal,

  1. Si l'utilisateur télécharge les données du formulaire, alors les données du formulaire et l'url sont envoyées ensemble au backend, et le backend les reçoit, et juge si l'url contient /temp/, si elle le contient, déplace le fichier vers le répertoire de téléchargement , puis modifie l'url et l'enregistre dans la base de données ; si elle ne contient pas , téléchargez et mettez à jour la base de données normalement
  2. Si l'utilisateur ne télécharge pas les données du formulaire, le fichier n'existe que dans le répertoire temporaire et nous n'avons qu'à effacer périodiquement le répertoire temporaire

Une partie du code d'implémentation :

// 判断文件是否存在
const exists = async category_pic => await fs.promises.access(category_pic).then(() => true).catch(_ => false)

// 获取文件名
let fileName = path.basename(category_pic)
// 原文件绝对路径
let filePath = path.join(__dirname, '../uploads/temp/' + fileName)
// 目标文件绝对路径
let newFilePath = path.join(__dirname, '../uploads/categoryPic/' + fileName)
// 存入数据库的url
category_pic = config.fileServer + '/categoryPic/' + fileName

// 移动文件到上传目录
fs.rename(filePath, newFilePath, function(err){
    
    
  if(err) return res.cc(err)
})

Je suppose que tu aimes

Origine blog.csdn.net/cocogogogo/article/details/124360240
conseillé
Classement