Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否与其他用户同时上载而不重复? 同时上载可能会覆盖某人的项目图像。_Mysql_Node.js_Express_Multer - Fatal编程技术网

Mysql 是否与其他用户同时上载而不重复? 同时上载可能会覆盖某人的项目图像。

Mysql 是否与其他用户同时上载而不重复? 同时上载可能会覆盖某人的项目图像。,mysql,node.js,express,multer,Mysql,Node.js,Express,Multer,我发现,当用户同时上传图像时,他们实际上可以覆盖或附加到另一个用户的图像上。我是一名计算机专业的学生,我对nodejs和express还不熟悉,我需要有人帮助我找到阻止这种情况发生的方法 我使用的数组可以由另一个用户更改,因为我的脚本无法处理大量进程,因此如果有人与另一个用户同时上载5个图像,它会将它们附加到同一个数组中。我试图重置阵列,但它可能会导致相同的问题 const express=require('express') 常量fs=require('fs') 常量multer=requi

我发现,当用户同时上传图像时,他们实际上可以覆盖附加到另一个用户的图像上。我是一名计算机专业的学生,我对nodejs和express还不熟悉,我需要有人帮助我找到阻止这种情况发生的方法

我使用的数组可以由另一个用户更改,因为我的脚本无法处理大量进程,因此如果有人与另一个用户同时上载5个图像,它会将它们附加到同一个数组中。我试图重置阵列,但它可能会导致相同的问题


const express=require('express')
常量fs=require('fs')
常量multer=require('multer')
const session=require('express-session')
让itemController=require(“../controllers/item”)
const connection=require(“../models/db”)
常量{brotliDecompress}=require('zlib')
const{stringify}=require('querystring')
让路由器=express.router()
//图像上载列表
var imgList=[]
var path=“”
让文件名=未定义
let storage=multer.diskStorage({
目标:功能(请求、文件、cb){
if(fs.existsSync(`./public/images/users/${req.session.username}`)){
console.log('文件夹已存在,跳过文件夹创建!')
}否则{
fs.mkdir(`./public/images/users/${req.session.username}`,(err)=>{
如果(错误){
console.log(错误)
}否则{
log(“文件创建成功!”)
}
})
}
//图像转到/images/users/[username]/目录
cb(null,`./public/images/users/${req.session.username}`);
},
文件名:函数(请求、文件、cb){
如果(!file.originalname.match(/\(jpg | jpg | jpeg | jpeg | png | png | gif | gif)$/){
req.fileValidationError='只允许使用图像文件!';
返回cb(新错误('只允许图像文件!'),false);
}
fileName=file.fieldname+'-'+Date.now()+file.originalname//稍后使用此变量将文件路径添加到数据库
路径=`/images/users/${req.session.username}/${fileName}`
imgList.push(路径)
cb(空,文件名)
}
});
让uploadDisk=multer({storage:storage});
路由器.get('/add',(req,res)=>{
if(请求会话loggedIn){
res.render('itemsystem/add.ejs')
}否则{
//如果用户没有登录,他将被重定向到登录页面
res.redirect(“/login”)
}
})
//5是上传的限制
router.post('/add',uploadDisk.array(“image”,5),(req,res)=>{
if(请求会话loggedIn)
{
让userId=req.session.userId;//用户id
//很多行检查输入字段是否正确。。。
connection.query(
'插入项目(项目图像、项目名称、项目描述、项目价格、可用性、促销、用户id、性别、类型、类别、样式)值(?,,,,,,,,,,,,,,?),
[JSON.stringify(imgList),name,desc,price,available,0,userId,gender,type,categories,style],
(错误,结果)=>{
如果(错误)抛出错误
res.redirect(“/profile”)
}
)
}否则{
res.redirect(“/login”)
}
})

为什么有一个全局变量?这可能是你问题的根源。不要在请求之间共享这样的数据。仅使用数据库、cookie或会话来执行此操作。