网站后台上传文件失败

四台服务器做的负载均衡,都是linux系统,在网站后台上传图片 有时会出现上传失败情况,谁知道这种情况是因为什么原因引起的

1个回答

文件格式限制?文件大小限制?分析上传成功与上传失败图片文件的区别?

li_zhen1
li_zhen1 文件上传失败 ,系统里记录php警告“PHP警告:文件上传错误-无法创建临时文件
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring Cloud应用了Zuul上传文件失败
Spring Cloud 应用了Zuul进行前台请求对应服务的跳转,浏览器上传文件前段服务接收不到文件列表长度为0 前台能上传成功,测试后台接收文件的方法如下 @ApiOperation(httpMethod="POST",value = "添加上传文件", notes = "上传文件") @PostMapping("/file/upload/file") @ResponseBody File upload(@ApiParam("业务流程模型")@Param(value = "file") List<MultipartFile> file) { List<File> list = new ArrayList<File>(); System.out.println("******"+file.size()); for (MultipartFile multipartFile:file) { File newFile = new File(); System.out.println("multipartFile=="+multipartFile); InputStream inputStream; try { inputStream = multipartFile.getInputStream(); System.out.println("inputStream==="+inputStream); String OldFile = multipartFile.getOriginalFilename(); System.out.println("******"+OldFile); } catch (IOException e) { e.printStackTrace(); } } return new File(); }
weblogic12c使用struts2上传文件失败
使用struts2开发的文件上传功能,在Tomcat6、7以及weblogic10中使用都正常,但是在weblogic12c中部署时无法在后台获取到表单中的内容。 前台表单如下: <form id="file_upload_form" method="post" enctype="multipart/form-data" action="systemmanage/videoMng_uploadFile.action"> <table width="100%"> <tr> <td>上传文件</td> <td> <input type="file" name="form.uploadfile" id="uploadFile"/> <input type="hidden" name="form.tree_node_id" value="<%=rowid %>"> </td> </tr> </table> </form> 问题表现: 在后台使用request.getParameter("form.uploadfile")获取的内容为null
sturts2在IE11上传文件出错
sturts2在IE11上用file上传文件,上传成功几次之后突然失败,前台后台都不报错。好像是请求中断了。同一个文件连续上传也会失败。该怎么解决啊?
后台如何获取上传文件,急,web方面一点都不懂但工作需要,望回答详细点,谢谢
第一、cshtml文件代码: class="easyui-window" id="import-excel-template" title="文件上传" style="width:500px;height:150px;padding:2px;" closed="true"> 《Form id="importFileForm" method="post" enctype="multipart/form-data" style="display:none"> 《 table style="margin:5px;height:70px;"> 《tr> 《td>《input type="file" class="easyui-filebox" id="fileImport" name="fileImport" style="width:400px;" onchange="document.getElementById('textfield').value=this.value"></td> 《td></td> 《/tr> 《tr> 《td colspan="4">《label id="fileName" /></td> 《/tr> 《tr> 《td colspan="4"> 《label id="uploadInfo" /> </td> 《/tr> 《/table> 《input type="text" name="textfield" class="file" id="textfield" 《div style="text-align:center;clear:both;margin:5px;"> 《a id="uploadFile2" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" data-bind="click:importFileClick" href="javascript:void(0)">上传</a> 《a class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" data-bind="click:closeImportClick" href="javascript:void(0)">关闭</a> 《/div> 《/form> 《/div> 第二、js代码 //获取form数据 var formData = new FormData($("#importFileForm")[0]); var strUrl = '/api/sys/ProductVersion/PostExcelData?' + 'VersionCode=' + escape(mUploadVersion);//关键 escape编码后台直接读出的是中文 //调用apicontroller后台action方法,将form数据传递给后台处理。contentType必须设置为"multipart/form-data" $.ajax({ url: strUrl, type: 'POST', //上传文件则此属性是必须的,但得出VersionCode为乱码;若不是上传文件不要此属性VersionCode不是乱码 data: formData, //{"":"avvvv"}, //与此属性无关Request.Files async: false, cache: false, contentType: "multipart/form-data", //必须false才会自动加上正确的Content-Type processData: false, //必须false才会避开jQuery对 formdata 的默认处理 success: function (returnInfo) { //上传成功后将控件内容清空,并显示上传成功信息 document.getElementById('fileImport').value = null; document.getElementById('uploadInfo').innerHTML = "<span style='color:Red'>" + returnInfo + "</span>"; mbHasUpload = true; }, error: function (returnInfo) { //上传失败时显示上传失败信息 document.getElementById('uploadInfo').innerHTML = "<span style='color:Red'>" + returnInfo + "</span>"; } }); 第三、public class ProductVersionApiController : ApiController里面的方法PostExcelData() //todo 获取客户端上传的文件集合, ie11可以,360-火狐-google chromse不行 HttpFileCollection files = System.Web.HttpContext.Current.Request.Files; **问题:Request.Files里面得到的是文件的路径而且除了ie其他浏览器时个数都是0,这个方法不实用。如果能得到文件字节流最好了。 不过无论什么方法,能解决我的问题就行**
ajaxfileupload.js文件上传SecurityError:Blocked
采用ajaxfileupload.js这个插件配合jquery-1.8.0.min.js多文件上传,在本地测试没问题,发上生产时,报:SecurityError:Blocked a frame with origin"https://31.0.3.4"from accessing a cross-originframe. 客户那边https://31.0.3.4是映射的https://182.2.2上的当然我这里是随便写的,上传文件的页面包含在一个iframe的。 代码: $.ajaxFileUpload( { url : url, //用于文件上传的服务器端请求地址 type: 'post', secureuri : false, //一般设置为false fileElementId : files, //文件上传空间的id属性 <input type="file" id="file" name="file" /> dataType : 'json', //返回值类型 一般设置为json data:{ name:"测试" }, success : function(data, status) { alert("成功"); }, error:function(){ alert("提交失败"); } }); 后台压根就没去,查了下网上的方法在ajaxFileUpload前加document.domian=""; 压根就没用。求大师指点!!!!!!!!!!!急急急
使用 bootstrap-fileinput 上传插件,如果上传超过2G的文件怎么办。
$("#input-file").fileinput({ language: 'zh', maxFileCount: 1, uploadUrl: "AjaxService.ashx?method=fileUpload", uploadAsync: true, previewFileIcon: '<i class="fa fa-file"></i>', initialPreview: [<%= fileUrl.Value %>], initialPreviewAsData: true, initialPreviewConfig: [<%= fileConfig.Value %>], deleteUrl: "AjaxService.ashx?method=fileDelete", overwriteInitial: false, showUpload: false, showRemove: false, //maxFileSize: 100 maxFileSize: 0 }).on("fileuploaded", function (e, data) { var res = data.response; if (res.fileUrl != "err") { files = res.fileUrl; $('#lj').val(files); } else { alert('附件上传失败 '); } }).on('fileclear', function (event) { console.log("fileclear"); }).on('filecleared', function (event) { console.log("filecleared"); }).on('change', function (event) { console.log("change"); }).on('fileselect', function (event, numFiles, label) { console.log("fileselect"); }).on("filedeleted", function (event, key) { //alert(key); }); }); 前段这块没有什么问题,当HttpContext.Current.Request.Files 获取文件的时候前段显示还没有上传成功,后台这个获取文件的方法就继续往下执行了,导致files.Count为0,上传不成功,这个是什么原因
ajaxfileupload多文件异步上传 获取不到file
今天用ajaxfileupload 上传图片,网上百度学习了半天 ,实现了一个图片的上传 ,成功了 。 同样的方法,同一个页面另外一个上传按钮却失败了。 跟踪了看 ,值都传到后台取到了; CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest .getFile(imgName); imgName也是和页面的input type=file的id name 对应的 但是 这个file就是等于null。 弄了半天没搞出来 。 而且我原来是好好的上传功能,没用异步的,在从这个取不到file的页面跳转过去后,file文件同样获取不到,为null。 这个 搞得项目卡住了~ 真闹心啊 。求大神救我~
求大神们帮忙看下我的这个上传文件大小的问题
求大神帮吗支个招,访问外网服务器的项目上传照片,当照片的大小差不多在50kb以下的时候能够上传成功,上传的文件大小在差不多50kb以上的时候就会上传失败,失败没有提示信息,失败后直接![图片说明](https://img-ask.csdn.net/upload/201606/07/1465286773_301599.png)这个页面,请问大神这种情况会是什么原因造成的呢,struts2和tomcat里都没有对文件上传大小做限制,是不是由于文件变大了表单提交之后后台还没有处理完毕前台就响应了啊 我以为是网速慢,请求超时的原因,我就远程的服务器桌面,用服务器开启页面上传了一张大点的照片,点击提交之后,过了一会儿页面刷新了,提示信息没有,然后又填入信息指定一张大的图片,这时就无法显示该网页了 补上获取上传数据的部分代码 ``` //把文件域中的内容上传到服务器 String path1 = ""; for(int i = 0 ;i<newsfile.length;i++){ File zl = newsfile[i]; String realname = newsfileFileName[i]; if(zl != null && zl.exists() && zl.length() > 0L){ SimpleDateFormat f = new SimpleDateFormat("yyyyMMddhhmmss"); String time= f.format(Calendar.getInstance().getTime()); String str = realname.substring(realname.lastIndexOf("."), realname.length()); //创建一个新文件 File destFile = new File(ServletActionContext.getRequest().getRealPath("\\")+"upload\\"+time+str); path1 = path1 +"\\upload\\"+time+str; //复制用户上传的文件到新文件 try { //FileUtils.copyFile(zl, destFile); FileInputStream fis = FileUtils.openInputStream(zl); new TjlshDao().inserImage(tb,fis); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ```
uploadify做文件上传火狐出现HTTP Error 302错误
uploadify做文件上传火狐出现HTTP Error 302错误,在百度上看到书加jsessionid就可以了, 但是我加了之后依然不行,这个该怎么弄啊 HTML代码: ``` <div class="row"> <input id="sessionID" type="hidden" value="${sessionID}"/> <div id="custom-queue"></div> <input type="file" name="file_upload" id="file_upload"/> <button class="task_btn_upload btn btn-default" onclick="$('#file_upload').uploadify('upload','*')">开始上传 </button> <button class="task_btn_upload btn btn-default" onclick="$('#file_upload').uploadify('stop')">取消上传</button> </div> ``` ![图片说明](https://img-ask.csdn.net/upload/201605/30/1464576508_370532.png) js代码: ``` $("#file_upload").uploadify({ 'auto': false, //是否允许自动上传 'swf': '/public/update/plugins/uploadify/uploadify.swf?var=' + (new Date()).getTime(), //引入flash 'buttonText': '请选择升级文件', //设置button文字 'removeCompleted': false,//是否移除掉队列中已经完成上传的文件。false为不移除 //'removeTimeout': 3,//设置上传完成后删除掉文件的延迟时间,默认为3秒。 'width ': '120', //按钮宽度 'height':'40', 'method': 'PSOT', //提交方式 'multi': 'false', //是否多文件上传 'fileObjName': 'updateFile', //文件对象名称,用于后台获取文件对象时使用 'preventCaching': 'true', //防止浏览器缓存 'formData': {'emergencyId': 1111}, //动态传参 //'queueID': 'custom-queue', //显示在某个div的位置 custom-queue div的id 'uploader': '/system/update/upload;jsessionid='+$("#sessionID").val(), //提交后台方法路径 'fileTypeExts':'*.zip', //限制文件上传类型 'queueSizeLimit':'1', //文件列队长度 //onUploadStart 动态传参的关键 'onUploadStart': function () { $("#file_upload").uploadify("settings", "formData", {'emergencyId': $("#id").val()}); }, 'onFallback': function () {//检测FLASH失败调用 alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。"); }, 'onUploadSuccess': function (file, data, response) { var Data = eval('(' + data + ')'); //alert(file.name+"上传"+Data.result); //alert(data); }, onError: function (event, queueID, file) { alert(file.name + " 上传失败"); }, 'onQueueComplete': function (stats) { //版本不一样方法也存在差异 //alert("成功上传的文件数:" + stats.uploadsSuccessful + " =上传出错的文件数:" + stats.uploadsErrored + " -上传的文件总大小:" + stats.uploadSize); //alert(stats.files.SWFUpload_0_0.name); bootbox.confirm({ buttons: { confirm: { label: '开始升级', className: 'btn btn-primary' }, cancel: { label: '取消', className: 'btn btn-default' } }, message: '文件上传成功,是否开始升级?', callback: function(result) { if(result) { //确认 $.get("/system/update/startUpdate?filename="+stats.files.SWFUpload_0_0.name,function(data){ alert(data); }); } else { //取消 } }, }); }, }); ``` 结果是这样的: ![图片说明](https://img-ask.csdn.net/upload/201605/30/1464576399_808001.png)
spring的多文件上传无法上传
各位大神,我做了一个springMVC的多文件上传,使用fileinput.min.js插件,前台将上传方法嵌套在添加方法里面调用,运行后添加的字段添加了,文件并没有上传,前后台均没有报异常,似乎没有跑上传那段代码 前台html: <form id="form_1" class="easyui-form" method="post" data-options="novalidate:true" onsubmit="returncheck()" > <table> <tr> <td class="td1">图片:</td> <td colspan="3" class="td2"><input name="add_pic" id="add_pic" type = "file" style="border:#FFF 1px solid; overflow:hidden; font-size:10px" multiple /></td> </tr> </table> </form> 前台js: function initFileInput() { alert("123") $("#add_pic").fileinput({ language: 'zh', //设置语言 uploadUrl: "../services/engineering/upload.do", //上传的地址 allowedFileExtensions : ['jpg', 'png','gif','mp4'],//接收的文件后缀 showUpload: false, //是否显示上传按钮 showCaption: false,//是否显示标题 browseClass: "btn btn-primary", //按钮样式 maxFileCount : 3, // 表示允许同时上传的最大文件个数 }); alert("走完了") $("#edit_pic").fileinput({ language: 'zh', //设置语言 uploadUrl: "../services/engineering/upload.do", //上传的地址 allowedFileExtensions : ['jpg', 'png','gif','mp4'],//接收的文件后缀 showUpload: false, //是否显示上传按钮 showCaption: false,//是否显示标题 browseClass: "btn btn-primary", //按钮样式 maxFileCount : 3, // 表示允许同时上传的最大文件个数 }); } initFileInput(); //表单提交事件 function submitForm() { var q = {}; if (flag == "1s") { $("add_pic").fileinput('upload'); q.engineergingname = $("#add_title").val(); q.manager = $("#add_fzr").val(); $.ajax({ type : "POST", contentType : "application/json", dataType : "json", url : "../services/engineering/add.do", data : JSON.stringify(q), success : function(data) { } }); } 后台controller // 文件上传公用方法 private boolean saveFile(CommonsMultipartFile file) throws IllegalStateException, IOException { String originalFilename = file.getOriginalFilename(); if(file!=null && originalFilename!=null && originalFilename.length()>0){ String path ="C:\\temp\\"; String NewFilename = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf(".")); File newFile = new File(path+NewFilename); file.transferTo(newFile); System.out.println(path+NewFilename); System.out.println("上传成功"); return true; } System.out.println("上传失败"); return false; } @RequestMapping("/upload") public String filesUpload(@RequestParam("add_pic") CommonsMultipartFile[] files) throws IllegalStateException, IOException { //判断file数组不能为空并且长度大于0 System.out.println("jinlaile"); if(files!=null&&files.length>0){ //循环获取file数组中得文件 for(int i = 0;i<files.length;i++){ CommonsMultipartFile file = files[i]; //保存文件 saveFile(file); } } System.out.println("走完了"); // 重定向 return "SUCCESS"; }
怎么用ajax下载excel文件?
我现在的问题是调用了后台的导入接口(即把含有数据的excel文件上传到后台),当导入过程有数据相关错误时(数据类型错误、行数错误、数据重复错误等),后台的导入接口使浏览器自动下载一个名字为error的文件,并且这个error文件是自动生成的,没有URL。我导入时是用FormData做的,可是那个error文件不会自动下载,而且放到项目里chrome的调试工具response返回的是乱码,但是后台自己写的测试html,response是空白的,没有任何东西。下面是后台的html测试程序![图片说明](https://img-ask.csdn.net/upload/201609/22/1474541730_833773.png)。第二张是我的代码:![图片说明](https://img-ask.csdn.net/upload/201609/22/1474541836_40427.png) 求大神指点,最好有代码: 我的任务其实就是把之前导出的excel文件传到后台,并且做相应的弹出提示: 1、上传成功 2、上传失败(a,当文件格式错误或没有选择文件时,直接弹出相应提示(已实现) b,当导入的数据有问题时,后台的接口是下载一个名字为error的excel文件) 如果哪位有更合适的代码,也可以指点我这个小白一下
前台extjs,后台asp.net 中 Extjs filefield 文件上传问题
上传的时候发现有时候成功有时候失败及其不稳定,尤其不支持excel,调试的时候进入到下面的代码中,发现context.Request.Files中始终获取不到值,很郁闷~~~希望有extjs大神帮帮 HttpFileCollection files = context.Request.Files;
ajax文件上传,回调函数参数问题
第一次提问希望有大神帮我解答。 我下了一个ajax的插件ajaxfileupload.js来做的上传文件问题。 后台一切都跑的很顺利,回调函数success的参数也有值,但是我分解参数的时候却出现了问题 ``` $.ajaxFileUpload({ url : base.domain + "/customer/importInfoExcel.do", type : 'post', secureuri : false, // 一般设置为false fileElementId : 'importExcel', // 上传文件的id、name属性名 dataType : 'json', success : function(data, status) // 服务器成功响应处理函数 { alert("11111111111" + data); alert("2222222222" + data.status.statusCode); console.log(e); if (data.status.statusCode == "000000") { window.parent.createPopup("批量导入信息成功!"); window.location.href = "myCustomer.jsp"; } else if (data.status.statusCode == "000002") { window.parent.createPopup(data.status.StatusMessage); window.location.href = "myCustomer.jsp"; } else { window.parent.createPopup(data.status.statusMessage); window.location.href = "myCustomer.jsp"; } }, error : function(data, status, e)// 服务器响应失败处理函数 { console.log(e); alert(e); } }); ``` alert(data)是有值的,如下图 ![图片说明](https://img-ask.csdn.net/upload/201508/07/1438947595_139310.png) 但是,alert(data.status.statusCode);却得不到值。如下图 ![图片说明](https://img-ask.csdn.net/upload/201508/07/1438947695_862254.png) 求解答。。。。在线等
ssh项目页面url包含Action名时ajax上传文件返回错误500
本人正在做一个网站,暂时做到能够正常登录和注销,现在希望在已登录页面加一个文件上传功能。 目前该功能代码已经完成,在一般的jsp和html页面内都能正常使用,在该网站项目内虽然也能正常使用,但是在执行success后会跳出java.lang.nullpointerexception,无法回到原页面上。现已经确认后台代码没有问题,问题发生在action的return后。代码如下,这一方面的一些原理我的确还不是很懂,还请各位指点一二,谢谢。 1.jsp、html以及网站内jsp都是使用的这一段代码,前两者可用项目内的不可用 ``` <form id="myForm"> 选择Excel:<input type="file" name="input"> <button onclick="btn()">上传</button> </form> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> function btn(){ var formData = new FormData($("#myForm")[0]); $.ajax({ type : "post", url : "/Web_project/Fill/upload", data : formData, async: false, cache: false, contentType: false, processData: false, error: function (result) { alert('异常'); }, success: function (result) { if(result.error == ""){ alert("已上传"); }else{ alert("失败") } } }); } </script> ``` 2.upload.action对应的result ``` @Result(name="uploaded",type="json",params={"root","mm"}) ``` 3.jsp页面下的url和项目action跳转后的url,这是我发现的两者唯一区别,不知道是不是能证明什么问题 ![图片说明](https://img-ask.csdn.net/upload/201903/06/1551811215_326338.jpg) ![图片说明](https://img-ask.csdn.net/upload/201903/06/1551811226_117785.jpg) ******************** ************************************ 虽然不是很清楚原因,但是我个人认为是ajax提交了页面后,页面刷新,触发了登录用的action,再次检验用户登录,但是却没有取到数据,所以空指针。(个人猜测,没有详细了解) 我给action这段代码加了一个判断session是否为空,不为空则直接返回的代码段,这么一来在ajax提交页面后,action内验证登录的部分代码不会再次运行,页面也确实没有出现错误而是正常停留在原页面。 虽然没有能直接解决我的问题,但是很感谢各位的建议和帮助。
MultipartFile多张图片上传,只能传一张,请问到底是这么回事啊,谢谢
public void doPost(@RequestParam("file") MultipartFile[] file,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String[] delOs = request.getParameterValues("delOs"); if (file != null && file.length > 0) { int flag = 0;//跳出循环标识 // 循环获取file数组中得文件 for (int i = 0; i < file.length; i++) { MultipartFile pic = file[i]; // 文件名使用当前时间 String name = contractNo +"@"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); // 获取上传图片的扩展名(jpg/png/...) String extension = FilenameUtils.getExtension(originalFilename); // 图片上传的绝对路径 String url = "D:\\workspace\\File\\"; File dir = new File(url); if (!dir.exists()) { dir.mkdirs(); } if (pic.isEmpty()) { // TODO文件为空时处理 return; } else { pic.transferTo(new File(url+ name + "." + extension)); } } } } catch (Exception e) { throw new RuntimeException("服务器繁忙,上传图片失败"); } } 后台断点下没问题,file里多张图片,也可上多张,但是去掉断点,直接运行,每次就只能上传最后一张,请指教!谢谢!不好意思,没有C币!抱歉
求助,怎样做Excel大文件上传,解析。
做一个通过jsp上传Excel文档,后台进行解析的功能,项目是struts2,一开始,我是这样写的: jsp: <div id="dlg2" class="easyui-dialog" style="width:400px;height:180px;padding:10px 20px" closed="true" buttons="#dlg-buttons2"> <form id="uploadForm" method="post" enctype="multipart/form-data"> <table style="width:320px;height:80px;"> <tr> <td>下载模版:</td> <td><a href="javascript:void(0)" class="easyui-linkbutton" onclick="downloadTemplate()">下载模板文件</a></td> </tr> <tr> <td>上传文件:</td> <td><input type="file" name="userUploadFile" id="selectedExcel"></td> </tr> </table> </form> </div> <div id="dlg-buttons2"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">导入</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a> </div> js: function uploadFile(){ debugger; var fileName = $('#selectedExcel').val(); if(fileName == ""){ $.messager.alert('提示','请选择上传文件!','info'); return; } fileext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length); fileext = fileext.toLowerCase(); if (fileext == 'xls' || fileext == 'xlsx'){ $.messager.progress({title:'提示',msg:'正在导入,请稍候...'}); $("#uploadForm").form('submit',{ type : "post", url : "<%=basePath%>" + "ImportAndExport/DataImport.action?selType=" + selType + "&fileext=" + fileext, data : "", dataType : "json", success : function(result){ $.messager.progress("close"); var data = result.split("\""); $.messager.alert('提示',data[1],'info'); }, }); } else{ $.messager.alert('提示','请选择xls/xlsx格式文件!','info'); } } 后台action接收方法: public String upload() throws Exception{ try { HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType(userUploadFile, selType, fileext); } catch (Exception e) { resultTip = "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); } return "importResult"; } service进行解析: public String importExcelByType(File f,String type,String ext){ Workbook workbook = null; int recordNum = 0;//记录插入记录数 try { if(XLS.equals(ext)){ workbook = new HSSFWorkbook(new FileInputStream(f)); } else if(XLSX.equals(ext)){ workbook = new XSSFWorkbook(new FileInputStream(f)); } Sheet sheet = workbook.getSheetAt(0); 直接用new XSSFWorkbook(new FileInputStream(f))或new HSSFWorkbook方法,获得Workbook对象。 但是,我要解析的Excel文件数据量比较大,一般都是10万条左右,获得Workbook对象的这一步直接内存溢出,拆到一万条一个文件的时候可以跑,但是十分钟很慢,于是上网找了找其他的解析Excel方法,找到了一个号称占用小速度快的,Eclipse跑了有效: [](http://blog.csdn.net/lishengbo/article/details/40711769 "") 我把这个代码拿过来用,加了个返回值List<String[]>的readExcel方法,内容就是: public static List<String[]> readExcel(String f,int columnNum) throws Exception{ // List<String[]> list=XLSXCovertCSVReader.readerExcel("d:\\a.xlsx", "sheet1", 45); List<String[]> list = XLSXCovertCSVReader .readerExcel( // "C:\\Users\\hbkn\\Desktop\\dnbb亳州导入数据\\dnbb亳州\\中压基础数据查询结果\\中压测试.xlsx", "d:\\a.xlsx", "Sheet1", 45); return list; } 然后我高高兴兴拿过来用,修改action方法如下: public String upload() throws Exception{ InputStream is=null; OutputStream os=null; String temp="d:\\a.xlsx"; try { is = new BufferedInputStream(new FileInputStream(userUploadFile)); os = new BufferedOutputStream(new FileOutputStream(temp)); byte[] buffer = new byte[1024]; int len=0; while((len=is.read(buffer))>0){ os.write(buffer,0,len); } HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType1(temp, selType, fileext); }catch(Exception e){ resultTip= "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); }finally{ if(is !=null){is.close();} if(os!=null){os.close();} } return "importResult"; } 修改service方法如下: public String importExcelByType1(String f,String type,String ext){ try { String[] colArr = getColumnName(type).split(","); HashMap<String, String> colMap = new HashMap<String, String>(); for(int i = 0;i < colArr.length;i++){ colMap.put(colArr[i].split(":")[0], colArr[i].split(":")[1]); } List<String[]> readExcel = XLSXCovertCSVReader.readExcel(f, colArr.length); System.out.println(readExcel.size()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return ext; } 发现报: org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'd:\a.xlsx' at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:221) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readerExcel(XLSXCovertCSVReader.java:451) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readExcel(XLSXCovertCSVReader.java:480) at com.ssh.effectiveCheck.service.impl.ImportServiceImpl.importExcelByType1(ImportServiceImpl.java:45) at com.ssh.effectiveCheck.action.ImportAction.upload(ImportAction.java:72) 。。。。。 Caused by: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:219) at java.util.zip.ZipFile.<init>(ZipFile.java:149) at java.util.zip.ZipFile.<init>(ZipFile.java:163) at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:174) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104) ... 75 more 但是我手动修改了的解析类里的需要解析的Excel文件路径,不再让它解析我上传后的Excel,而是解析本地的原本的Excel(tomcat服务安装在本地),不报这个错了,list也成功取到了。 也就是说网上找到的这个解析方法不认我上传之后的Excel文件(明明WPS一样可以打开)。 在这个过程中,我又动了歪脑筋,这个服务是单机版,以后部署也是单机,那我能不能不上传,直接让服务解析本地的Excel呢? 所以,各位高手,我想得到解决方案(任一即可), 1。通过jsp获取一个文件的本机绝对路径(我用var fileName = $('#selectedExcel').val();试了,debug显示是fileName = "C:\fakepath\中压测试1.xlsx",这个并不是真实路径)。 2.求正确的上传Excel文件的方法,能让上面链接里代码可以成功解析的那种。 3.Workbook解析Excel大文件的正确姿势,能不能做到分段,占用内存小,速度快的那种。
java web项目整合一个图片上传webUploader
因为是初学者,所以想写个ssh的小项目,练练手, 在网上下了一个商城的后台模板,最近正在实现功能, 现在写到了,新增商品时的上传功能, 模板自带的上传是用的webUploader, 现在遇到的问题是图片上传的时候不知道怎么保存在服务器中, 代码如下: html: <div class="clearfix cl"> <label class="form-label col-2">图片上传:</label> <div class="formControls col-10"> <div class="uploader-list-container"> <div class="queueList"> <div id="dndArea" class="placeholder"> <div id="filePicker-2"></div> <p>或将照片拖到这里,单次最多可选300张</p> </div> </div> <div class="statusBar" style="display:none;"> <div class="progress"> <span class="text">0%</span> <span class="percentage"></span> </div> <div class="info"></div> <div class="btns"> <div id="filePicker2"></div> <div class="uploadBtn">开始上传</div> </div> </div> </div> </div> </div> js: $(function(){ $('.skin-minimal input').iCheck({ checkboxClass: 'icheckbox-blue', radioClass: 'iradio-blue', increaseArea: '20%' }); $list = $("#fileList"), $btn = $("#btn-star"), state = "pending", uploader; var uploader = WebUploader.create({ auto: true, swf: 'lib/webuploader/0.1.5/Uploader.swf', // 文件接收服务端。 server: 'fileUpload.action', // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: '#filePicker', // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! resize: false, // 只允许选择图片文件。 accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/*' } }); }); 问题是, // 文件接收服务端。 server: 'fileUpload.action', 在网上查的这个属性是文件接收服务器端,如果我给一个Action,它会显示上传成功![图片说明](https://img-ask.csdn.net/upload/201706/25/1498386878_982619.png) 就算是上传成功,在服务器也找不到这个图片, 但是,原页面和网上搜到的一些例子都是 // 文件接收服务端。 server: 'http://webuploader.duapp.com/server/fileupload.php', 以php结尾的文件,这个是有什么问题,求解释 如果我修改成这个文件,就上传失败了, 这个属性值到底是给什么,还有,我怎么能获取到他的路径,文件名称,是在Action中定义file属性,get,set,获取他的值吗?
springmvc MultipartFile 重复上传同一张图片ear.jpg 如何设置服务器不会增加这张图片
文件上传后 自动 生成 时间戳+随机码 但是 我的后台需要上传的图片有重复的 不想让他重新生成新的图片新的名字 控制器部分代码 ``` MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 图片上传 MultipartFile left_img = multipartRequest.getFile("left_img");// 上传左图原文件 MultipartFile right_img = multipartRequest.getFile("right_img");// 上传右图原文件不仅仅是名字 FileUtil fileUtil = new FileUtil(); String fileRoot = request.getSession().getServletContext().getRealPath("upload/handAcupoint"); System.out.println("fileRoot:" + fileRoot); String type = multipartRequest.getParameter("type"); String id = multipartRequest.getParameter("id1"); String code = multipartRequest.getParameter("num"); String name = multipartRequest.getParameter("name"); String en_name = multipartRequest.getParameter("en_name"); String pinyin = multipartRequest.getParameter("pinyin"); String location = multipartRequest.getParameter("location"); String left_x = multipartRequest.getParameter("left_x"); String left_y = multipartRequest.getParameter("left_y"); String right_x = multipartRequest.getParameter("right_x"); String right_y = multipartRequest.getParameter("right_y"); String zhuzhi = multipartRequest.getParameter("zhuzhi"); String leftFileName = null; String rightFileName = null; String yleftName = null; // 原来左图片名字 String yrightName = null;// 原来右图片名字 String res = null; int code1 = Integer.parseInt(code); int right_x1 = Integer.parseInt("0" + right_x); int right_y1 = Integer.parseInt("0" + right_y); int left_x1 = Integer.parseInt("0" + left_x); int left_y1 = Integer.parseInt("0" + left_y); if (type.equals("0")) {// 添加手诊穴位信息 leftFileName = fileUtil.saveImg(left_img, fileRoot, yleftName); // 左图 rightFileName = fileUtil.saveImg(right_img, fileRoot, yrightName); // 右图 int num = handDiagnosisService.saveHandAcupoint(code1, name, en_name, pinyin, location, leftFileName, rightFileName, left_x1, left_y1, right_x1, right_y1, zhuzhi); if (num != 0) { res = "1001";// 添加成功 } else { res = "1002";// 添加失败 } OutputUtil.outPutString(response, res); } ``` 上传类代码 ``` public class FileUtil { /** * 上传图片 * @param imgFile 图片文件 * @param fileRoot 目标地址 * @param fileName 图片名称 * @return * @throws IOException * @throws IllegalStateException */ public String saveImg(MultipartFile imgFile,String fileRoot,String fileName) throws IllegalStateException, IOException{ if(imgFile == null){ return null; } File src = new File(fileRoot); if (!src.exists()) { src.mkdirs(); } fileName = fileName==null?System.currentTimeMillis()+ new Random().nextInt(100000)+".jpg":fileName; /* String fileName = System.currentTimeMillis()+ new Random().nextInt(100000)+".jpg"; //图片名 */ File newFile = new File(src, fileName); imgFile.transferTo(newFile); return fileName; } } ``` **这是图片 同一张图片重复好多次** ![图片说明](https://img-ask.csdn.net/upload/201610/25/1477388105_516255.jpg)
extjs,上传excel文件后报SyntaxError: syntax error错误,纠结一下午了,请大神
基本代码如下: form.getForm().submit({ url : importWhiteUserUrl, method : 'POST', success : function(form, action) { Ext.MessageBox.alert('信息', action.result.showmessage); _this.loadData(); win1.close(); }, failure : function() { Ext.Msg.alert('出错了', '导入失败!'); window.close(); }, scope: this }); } } }, { text : '关闭', handler : function() { win1.close(); } }] }); url为importWhiteUserUrl,后台是servlet用poi实现excel解析,最后返回前端代码如下 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); response.getWriter().write( "{'success':true,'showmessage':'导入成功!'}"); 现现象为,excel成功被解析,并把批量数据存入数据库,但通过firebug看前台报SyntaxError: syntax error错误,指向ext-all-debug.js (第 8273 行,第 1 列),求各位指点!!试了一下午了!!谢谢!!
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问