A. 高分求助,java TOMCAT实现文件上传下载
回答:1.上传文件的页面,form中必须加入enctype="multipart/form-data" 属性. 提交后用request.getInputStream()获得所有的数据。 注:回request中所有的数据及相应的值都会答从这里获得,自己可以把这个输出流里面的东东全部输出出来看看是什么,对刚接触这部分的人员很有帮助。 另一方面,也说明自己用jsp写个上传文件的功能挺费事的,一般的公司用到上传文件的功能时,都是用网上一些公布第三方jar包,很方便的。2.把request.getInputStream() 获得的输出流,转化一下,变成输出流,就可以存到你想存的地方了,这部分需要IO部分的知识。3. 在第二点保存文件时,你会有一个file对象,根据这个对象的一些方法会获得你想要的数据,如文件名是getName() , 绝对路径是getAbsolutePath() 。建议把所有get方法自己打印出来体验一下。4.最简单的下载方式就是用a标签,其中的href属性指向到你的文件。当然,还有其它高级用法,如果需要再联系我。
B. 问一下如何上传文件到tomcat的webapps文件夹中
首先 你的明白 文件上传的原理jsp 页面 通过表单 属性设置input type=file 是告诉服务器 这里 请求的是个文件 服务器 通过二进制 读取文件 然后 在写文件 所以你设定好写文件的路径 不就可以了么 其次 我想你的工程 应该是部署在webapps下吧 一般 文件上传都是存放在工程相应目录下的
C. 怎么向tomcat服务器上传文件
1.将tomcat环境搭配好path中加入:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;2.修改tomcat中config/server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!– SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html –> <!– <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> –> <!– Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" –> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/> <Context docBase="D:\workspace\picture\target\mvc-basic.war" path="/picture"/> </Host>添加红色部分docBase中要为项目打包成的war文件。path随意启动tomcat bin\startup.bat,如果这时tomcat一闪而过,表示启动异常,很可能是配置或者server.xml出问题了。注意:有时即使更改了war文件里面的文件,程序仍然没有任何变化,这个时候要把apache-tomcat-7.0.11\webapps下的项目文件给删除,再重新启动tomcat。由于我是用eclipse开发的,下面那段红色线表示我发布的位置,wtpwebapps下,我试过,只有把图片放在D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\ROOT里面项目才能读取到图片。而如果将项目打包成war后,更改<Context docBase="D:\workspace\picture\target\mvc-basic.war" path="/picture"/>更tomcat的根目录是apache-tomcat-7.0.11\webapps,只需要在这个下面建立images目录,把图片往里面存就行了。3.代码[java] view plain private static final String PICTURE_WEB_INF = "/picture/WEB-INF"; private static final String ROOT_IMAGES_PICTURE = "/ROOT/images/picture"; private static final String IMAGES_PICTURE = "/images/picture"; @RequestMapping(value = "/add",method = RequestMethod.POST) public String save(Picture picture, HttpServletRequest request) { this.FileAndSaveFile(request, picture); this.pictureService.save(picture); return "redirect:/index"; } private void FileAndSaveFile(HttpServletRequest request, Picture material) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; for (Map.Entry<String, MultipartFile> entity : multipartRequest.getFileMap().entrySet()) { MultipartFile mf = entity.getValue(); String uuid = UUID.randomUUID().toString(); String classPath = this.getClass().getClassLoader().getResource("/").getPath(); try { classPath =URLDecoder.decode(classPath, "gb2312"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } classPath = classPath.split(PICTURE_WEB_INF)[0]; File pictureFile = new File(classPath+ROOT_IMAGES_PICTURE); if(!pictureFile.exists()){ pictureFile.mkdirs(); } String path = pictureFile.getPath(); String ext = null; try { if (null == mf || mf.isEmpty() || null == mf.getInputStream() || mf.getSize() > 40000000) { return; } ext = Files.getFileExtension(mf.getOriginalFilename()); if(classPath.indexOf("wtpwebapps")!=-1){ path = classPath+ROOT_IMAGES_PICTURE; }else{ path = classPath+IMAGES_PICTURE; } File f = new File(path +"/" + uuid + "." + ext); Files.createParentDirs(f); FileCopyUtils.(mf.getBytes(), f); material.setFilePath(IMAGES_PICTURE + "/" + uuid + "." + ext); material.setFileName(mf.getOriginalFilename()); } catch (IOException e) { e.printStackTrace(); } } } 因为使用eclipse开发的,所以会是indexof(wtpwebapps),其他的开发工具要看情况。jsp:另外img src好像不支持用绝对路径,显示不出来,我也不知道为什么,网络了很多都没说,但是绝对路径应该是不可行的,因为有时需要移植什么的容易出现问题。[html] view plain <head> <title>图片列表</title> <script language="javascript" src="./resources/js/jquery-1.8.3.js"> </script> <script language="javascript" src="./resources/js/jquery.validate.min.js"> </script> <script language="javascript" src="./resources/js/picture/add.js"> </script> </head> <body> <form action = "<c:url value = "/picture/add"></c:url>" method = "post" id="add_form" enctype="multipart/form-data"> <table class="tab01"> <tr> <td class="name">名称:</td> <td><input id = "name" type="text" class="text_input" name="title" placeholder="标题"/></td> <td><label for="title" class="error" generated="true" style="color:red;font-size:12px;"></label></td> </tr> <tr> <td class="name">上传图片:</td> <td><input type="file" class="text_input" name="file" id="file" placeholder="上传图片"/></td> <td><label for="file" class="error" generated="true" style="color:red;font-size:12px;"></label></td> </tr> <tr> <td> </td> <td colspan="2"> <input type="submit" class="button" id="submitButton" value="提交" name="reset" /> <input type="reset" class="button" value="重置" name="reset" /> </td> </tr> </table> </form> <br/><br/><br/> <c:forEach items = "${pictureList }" var = "picture"> <p>${picture.title }</p> <div><img src="${picture.filePath }" width = "500" height = "500" BORDER="0" ALT="无图片"/> </div> </c:forEach> </body> [javascript] view plain $(function(){ jQuery.validator.messages.required = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*请填写此内容</span>"; jQuery.validator.messages.maxlength = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*已达到最大字符数 </span>"; jQuery.validator.messages.accept = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*请输入拥有合法后缀名的字符串 </span>"; $("#add_form").validate({ rules : { title : {required : true, maxlength :200 }, file : {required : true} } }); $("input[type='file']").change(function(){ alert(this.files[0].size); if(this.files[0].size>300*1024){ alert("图片太大!!图片不大于300KB"); $("#submitButton").attr("disabled","disabled"); }else{ $("#submitButton").removeAttr("disabled"); } }); $("#add_form").submit(function() { var filepath=$("input[name='file']").val(); var extStart=filepath.lastIndexOf("."); var ext=filepath.substring(extStart,filepath.length).toUpperCase(); if(ext!=".BMP"&&ext!=".PNG"&&ext!=".GIF"&&ext!=".JPG"&&ext!=".JPEG"){ alert("图片限于bmp,png,gif,jpeg,jpg格式"); return false; } return true; }); });
D. tomcat上传的保存文件路径
在Servlet中,指定服务器上某个文件夹来保存文件:
//获得服务器应用程序所在的绝对路径StringrealPath=this.getServletContext().getRealPath(this.getServletName());realPath=realPath.substring(0,realPath.lastIndexOf("\"));StringuploadPath=realPath+"\upload\";//用于存放上传文件的服务器目录绝对路径
E. tomcat上传文件问题
第一步:需要先创建一个server,可以通过windows中的show view,之后找到server,
第二步:在server窗口中右击,选择”new-server“,之后创建好tomcat server。
第三步:双击创建的server,进入server设置界面,设置Server Location,选择编译路径是”Use Tomcat“即可切换到Tomcat的路径,保存。
第四步:之后将server项目添加到此server下,这样就完成了部署到Tomcat下。
F. tomcat上传比远程桌面复制慢
因为文件容量过大。tomcat运行正常,上传数据很缓慢,或者数据丢失。检查网络正常,检查数据库正常,也不卡顿,就是上传数据到数据库的时候很卡顿。如果是上述情况,既不是网络也不是数据库出现问题,建议压缩文件,或者选择远程桌面复制上传。
G. 怎么把文件上传到tomcat服务器
一,将项目导出成WAR包,而后将该包直接复制到tomcat的webapp目录下,这样就可以访问了 二,配置tomcat 修改${tomcat.home}\conf\server.xml文件.在Host节点下增加如下参考代码: docBase:指向项目的根目录所在的路径, 由于将项目打成了war包,所
H. tomcat中如何设置文件上传大小的控制,例如:超过Tomcat限定的50M , 而本人需要上传90M的WAR文件。
1、打开tomcat的默认配置文件(tomcat程序安装目录下的conf文件夹中的server.xml文件)。2、找到里面的<Connector>标签,在该标签中添加"maxPostSize"属性,将该属性值设置成你想要的最大值,单位是字节,或者把这个值设置为 0(maxPostSize="0"),tomcat将不再检查文件的大小。即可解决上述问题。