重复提交问题是由于用户多次点击上传按钮或者网络延迟造成的,可以通过以下方法解决:
-
前端解决方案:
- 在用户点击上传按钮后禁用按钮,避免用户多次点击。
- 在文件上传开始前,检查文件是否已经在上传中,如果是,则不进行重复上传。
- 在上传完成或者上传失败后,启用上传按钮,允许用户再次上传。
-
后端解决方案:
- 在上传文件时,记录已经上传的文件的信息,如文件名、大小等,将其存储在数据库或者缓存中。
- 在每次上传文件之前,先检查文件的信息是否已经存在,如果存在,则认为是重复提交,不进行上传操作。
- 在上传完成或者上传失败后,删除已上传文件的信息。
这样可以避免用户重复提交文件,并保证文件上传的唯一性。
upload.render({
elem: layero.find(“#uploadPicture”),
url: ‘{:url(“admin/annex/upload?type=modellabel&water=no&group=office”)}’,
data: {
model_id: 1
},
accept: ‘images’,
acceptMime: ‘image/png,image/jpeg’,
exts:‘jpg|png’,
method: ‘post’,
auto:false,
size: 1024*10, //上传文件大小kB
multiple: false, //允许多文件上传
number: 1, //可以同时上传的文件数量,0表示不限制
// bindAction: ‘#upimgAction1’,
choose: function (obj) {
//预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
var flag = true;
obj.preview(function (index, file, result) {
console.log(111);
console.log(file); //file表示文件信息,result表示文件src地址if(file.size > 1024*1024) { //当文件大小大于10MB时layer.msg("{$Think.lang.site_parametre_popup_img_max}1MB", {offset: 'auto'}); flag = false;}if(flag) obj.upload(index, file)});
// $(‘#upimgAction1’).click();
},
done: function (res, index, upload) { //每个文件提交一次触发一次。详见“请求成功的回调”
layer.msg(res.msg, {time: 1500, offset: ‘auto’});
if (res.code == 1) {
layero.find(“#carouselimg”).hide().addClass(‘product_price_tag_img_full’).attr(‘src’, res.data.file).fadeIn();
layero.find(“#carouselimgv”).val(res.data.file);
}
}
});