关于uploadify上传还在进行中,onUploadSuccess返回结果为false问题

Dreamiy 2016-04-05 10:39:28
使用uploadify在项目中做上传使用,但是使用过程中发现一个问题

再上传5M以内的文件时没有任何问题,但是在上传大于5M 的文件时出现返回信息提前的问题

问题模拟:
上传大文件file_upload向后台提交信息,

后台public String uploadFile(@RequestParam("pic") CommonsMultipartFile[] pic, HttpSession request,
HttpServletResponse response) throws IOException {
接收后向指定path写入文件
调用FileUtils.uploads(pic,Propertie.dynaform,request);写入

但是在写入的过程中前台的程序就接收到返回结果了,这个很不理解是问什么。

前台
'onUploadSuccess':function(file, data, response){
if(response){
var loadPath = $("#filePath").val();
if(loadPath == null || loadPath == ""){
$("#filePath").val(data);
}else{
$("#filePath").loadPath = loadPath+ ","+data;
$("#filePath").val(loadPath);
}
}else{
alert("服务器异常,请稍后再试");
}
}
此时报错alert("服务器异常,请稍后再试");


问题: 为什么后台还在上传文件时,前台onUploadSuccess就接收到response=false了??而且后台依旧还在运行,直到上传完整文件,但是已经不能把结果返回到前台了

二楼上代码
...全文
1060 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜拂晓 2016-09-21
  • 打赏
  • 举报
回复
引用 10 楼 showbo 的回复:
[quote=引用 9 楼 net_lover 的回复:] 应该是请求超时的问题吧?
引用 8 楼 u011630524 的回复:
是最后换了插件吗?还是成功解决,这个问题 我也是纠结了一段时间的。
有可能。。刚才看了下api uploadify超时时间认:30秒。。想起来那个视频转换如果文件太大执行时间超过了30s就会默认执行完毕,实际后台还是在继续运行转换程序 successTimeout 上传超时时间。文件上传完成后,等待服务器返回信息的时间(秒).超过时间没有返回的话,插件认为返回了成功。 默认:30秒 不过uploadify bug还是比较多。。还是iframe来模拟上传好点[/quote] 没想到最终就是successTimeout 解决的,之前没想过 会因为这个而不成功
  • 打赏
  • 举报
回复
引用 9 楼 net_lover 的回复:
应该是请求超时的问题吧?



引用 8 楼 u011630524 的回复:
是最后换了插件吗?还是成功解决,这个问题 我也是纠结了一段时间的。


有可能。。刚才看了下api uploadify超时时间认:30秒。。想起来那个视频转换如果文件太大执行时间超过了30s就会默认执行完毕,实际后台还是在继续运行转换程序

successTimeout 上传超时时间。文件上传完成后,等待服务器返回信息的时间(秒).超过时间没有返回的话,插件认为返回了成功。 默认:30秒

不过uploadify bug还是比较多。。还是iframe来模拟上传好点
孟子E章 2016-09-04
  • 打赏
  • 举报
回复
应该是请求超时的问题吧?
夜拂晓 2016-09-04
  • 打赏
  • 举报
回复
是最后换了插件吗?还是成功解决,这个问题 我也是纠结了一段时间的。
夜拂晓 2016-09-04
  • 打赏
  • 举报
回复
楼主 你的问题解决了吗?遇到和你一样的问题。。。。。
Dreamiy 2016-04-05
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
[quote=引用 4 楼 Dreamiy 的回复:] [quote=引用 3 楼 showbo 的回复:] 用jquery.form.js替换,之前也碰到过,做的视频转换,视频没转完就执行uploasuccess回调了。。不懂什么问题。。
意思是将原来的jquery-2.0.3.min.js替换成jquery.form.js???其他地方用到jq的不会冲突吗?[/quote] 不用用uploadify这个插件,用jquery.form.js插件 uploadify问题比较多,高版本firefox会获取不到文件。。[/quote] 好吧。。。。我去试试
  • 打赏
  • 举报
回复
引用 4 楼 Dreamiy 的回复:
[quote=引用 3 楼 showbo 的回复:] 用jquery.form.js替换,之前也碰到过,做的视频转换,视频没转完就执行uploasuccess回调了。。不懂什么问题。。
意思是将原来的jquery-2.0.3.min.js替换成jquery.form.js???其他地方用到jq的不会冲突吗?[/quote] 不用用uploadify这个插件,用jquery.form.js插件 uploadify问题比较多,高版本firefox会获取不到文件。。
Dreamiy 2016-04-05
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
用jquery.form.js替换,之前也碰到过,做的视频转换,视频没转完就执行uploasuccess回调了。。不懂什么问题。。
意思是将原来的jquery-2.0.3.min.js替换成jquery.form.js???其他地方用到jq的不会冲突吗?
  • 打赏
  • 举报
回复
用jquery.form.js替换,之前也碰到过,做的视频转换,视频没转完就执行uploasuccess回调了。。不懂什么问题。。
Dreamiy 2016-04-05
  • 打赏
  • 举报
回复
有没有大牛在啊
Dreamiy 2016-04-05
  • 打赏
  • 举报
回复
前台: $('#file_upload').uploadify({ //是否自动上传 true or false 'auto':false, 'swf' : '${basePath}/assets/uplodify/uploadify.swf',// uploadify.swf 文件的相对JS文件的路径 'fileObjName':'pic', 'onUploadSuccess':function(file, data, response){ if(response){ var loadPath = $("#filePath").val(); if(loadPath == null || loadPath == ""){ $("#filePath").val(data); }else{ $("#filePath").loadPath = loadPath+ ","+data; $("#filePath").val(loadPath); } }else{ alert($(".span").html()); $(".span").html("上传失败"); alert("服务器异常,请稍后再试"); } }, //返回一个错误,选择文件的时候触发 'onSelectError': function (file, errorCode, errorMsg) { switch (errorCode) { case -100: alert("上传的文件数量已经超出系统限制的" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + "个文件!"); break; case -110: alert("文件 [" + file.name + "] 大小超出系统限制的" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + "大小!"); break; case -120: alert("文件 [" + file.name + "] 大小异常!"); break; case -130: alert("文件 [" + file.name + "] 类型不正确!"); break; } }, 'uploader':'${basePath}/demand/uploadFile',//后台处理程序的相对路径 'removeCompleted':false }); Controller: @RequestMapping(value = "uploadFile", method = RequestMethod.POST, produces = "text/html;charset=utf-8") @ResponseBody public String uploadFile(@RequestParam("pic") CommonsMultipartFile[] pic, HttpSession request, HttpServletResponse response) throws IOException { //单个上传,批量上传实际上也就是单个上传衍生版本 List<FileDto> list= FileUtils.uploads(pic,Propertie.dynaform, request); AttachmentEntity attachmentEntity = new AttachmentEntity(); attachmentEntity.setPath(list.get(0).getPath()); attachmentEntity.setName(list.get(0).getFilename()); attachmentEntity.setCreateTime(new Date()); attachmentMapper.insert(attachmentEntity); return attachmentEntity.getId(); } File: public static List<FileDto> uploads(@RequestParam("file") CommonsMultipartFile[] files,String paths,HttpSession request){ List<FileDto> list=new ArrayList<FileDto>(); for(int i = 0;i<files.length;i++){ log.info("fileName---------->" + files[i].getOriginalFilename()); if(!files[i].isEmpty()){ int pre = (int) System.currentTimeMillis(); try { //拿到输出流,同时重命名上传的文件 log.info(files[i].getOriginalFilename()); FileDto fileDto=new FileDto(); String str=""; String[] fi= files[i].getOriginalFilename().split("\\."); str=fi[fi.length-1]; DateFormat format2 = new java.text.SimpleDateFormat("yyyyMMdd"); String date=format2.format(new Date()); //重命名上传后的文件名 String fileName = date+CommonUtil.getUUID()+"."+str; //定义上传路径 String path = "/home/yeshine/"+"upload"+paths + fileName; log.info(path); log.info("/home/yeshine/"+"upload"+paths); File localFile = new File("/home/yeshine/"+"upload"+paths ); if (!localFile.exists()) { localFile.mkdirs(); } FileOutputStream os = new FileOutputStream(path); //拿到上传文件的输入流 InputStream in = files[i].getInputStream(); fileDto.setFilename(files[i].getOriginalFilename()); fileDto.setPath("/home/yeshine/upload"+paths + fileName); list.add(fileDto); //以写字节的方式写文件 int b = 0; while((b=in.read()) != -1){ os.write(b); } os.flush(); os.close(); in.close(); int finaltime = (int) System.currentTimeMillis(); log.info(finaltime - pre); } catch (Exception e) { e.printStackTrace(); log.info("上传出错"); } } } return list; }
代码转载自:https://pan.quark.cn/s/a4b39357ea24 自动驾驶是当前科技界高度关注的研究方向,其研究范畴涵盖了人工智能、计算机视觉、机器学习以及传感器融合等多个重要学科。这份题为"自动驾驶论文"的资料,无疑为人们提供了一个深入了解这一复杂系统的机会。以下是基于其标题和描述所呈现的一些关键知识点的详细阐述: 1. **自动驾驶技术**:自动驾驶指的是车辆在无需人类驾驶员参与的情况下,借助各类传感器和智能算法来感知周围环境,制定行驶路线,并执行驾驶行为。这种技术的核心宗旨在于提升交通安全性、缓解交通压力,并改善出行体验。 2. **Python编程语言**:Python是一种在数据处理和科学计算领域得到广泛应用的高级编程语言,由于其语法简洁且拥有丰富的库支持,经常被应用于自动驾驶领域的数据处理、模型构建和系统集成。 3. **源代码分析**:论文中提供的源代码可能包含了自动驾驶算法的实现细节,可能涵盖环境感知模块(包括图像处理、激光雷达数据解读)、决策模块(涉及路径规划、行为分析)、控制模块(涵盖车辆动力学建模、控制策略设计)等,这些代码可作为学习和研究自动驾驶算法的实践范例。 4. **计算机视觉**:自动驾驶系统中的计算机视觉技术主要用于识别道路标识、行人、其他车辆等,这通常涉及图像分类、目标识别和语义分割等任务,常见的技术包括卷积神经网络(CNN)、区域提议网络(RPN)、YOLO、Faster R-CNN等。 5. **机器学习**:机器学习是自动驾驶技术的核心,用于训练模型以理解和预测复杂的驾驶情境。深度学习,特别是深度强化学习,在决策制定和控制策略方面已取得显著进展。 6. **传感器融合**:自动驾驶汽车通常装备多种传...

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧