文件上传
2016-07-20 00:00
381 查看
摘要: 将图片等文件上传到服务器中
1、工程环境
JDK:1.7
Tomcat:7.0
IDE:Eclipse luna
2、如何将eclipse工程发布到tomcat
eclipse工程默认部署位置不是在tomcat目录,需要手动改回来。
解决办法:
1、将Servers中部署的工程全部清空,在add and remove里面把工程remove掉。
2、在Servers上选择右键,clean
3、在Servers上选择右键,open,就可以编辑server ltion
4、把server location 改为tomcat安装目录,即下图第2个选项
再次运行工程,发现在tomcat根目录下多了一个wtpwebapps,这个目录下就有你的工程了。
webapps: tomcat 默认部署路径
wtpwebapps: eclipse默认部署路径
两者同时存在,运行bin目录下的startup.bat 时,会运行wtpwebapps中部署的项目
3、下载所需的jar包
一、jsp文件上传需要引入Apache两个jar包
1、Apache Commons IO
官网地址:
http://commons.apache.org/proper/commons-io/download_io.cgi
2、Apache Commons FileUpload
官网地址:
http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
将以上两个jar包放到web-inf下的lib中
4、上传文件的前台代码(jsp)
enctype="multipart/form-data" 表示设置表单的MIME编码,用于文件上传
enctype默认是application/x-www-form-urlencoded,不能用于文件上传
5、上传文件的后台代码(servlet)
DiskFileItemFactory ——FileItem对象的工厂
ServletFileUpload ——处理表单数据,将数据封装到FileItem对象中
FileItem ——用来封装表单中的元素和数据
如何获取工程根目录
如何获取文件绝对路径
核心代码如下,写在doPost()方法里
前台尽量别输入别的更多的<input />标签,会影响filedValue的获取。之后会有一个工具类发布更改这种毛病。
1、工程环境
JDK:1.7
Tomcat:7.0
IDE:Eclipse luna
2、如何将eclipse工程发布到tomcat
eclipse工程默认部署位置不是在tomcat目录,需要手动改回来。
解决办法:
1、将Servers中部署的工程全部清空,在add and remove里面把工程remove掉。
2、在Servers上选择右键,clean
3、在Servers上选择右键,open,就可以编辑server ltion
4、把server location 改为tomcat安装目录,即下图第2个选项
再次运行工程,发现在tomcat根目录下多了一个wtpwebapps,这个目录下就有你的工程了。
webapps: tomcat 默认部署路径
wtpwebapps: eclipse默认部署路径
两者同时存在,运行bin目录下的startup.bat 时,会运行wtpwebapps中部署的项目
3、下载所需的jar包
一、jsp文件上传需要引入Apache两个jar包
1、Apache Commons IO
官网地址:
http://commons.apache.org/proper/commons-io/download_io.cgi
2、Apache Commons FileUpload
官网地址:
http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
将以上两个jar包放到web-inf下的lib中
4、上传文件的前台代码(jsp)
<form action="UploadServlet" method="post" enctype="multipart/form-data"> <table> <tr> <td><input type="file" name="myPic"></td> </tr> <tr> <td><input type="text" name="picDesc"></td> </tr> <tr><td><input type="submit" value="上传"></td></tr> </table> </form>
enctype="multipart/form-data" 表示设置表单的MIME编码,用于文件上传
enctype默认是application/x-www-form-urlencoded,不能用于文件上传
5、上传文件的后台代码(servlet)
DiskFileItemFactory ——FileItem对象的工厂
ServletFileUpload ——处理表单数据,将数据封装到FileItem对象中
FileItem ——用来封装表单中的元素和数据
如何获取工程根目录
String rootPath=getServletContext().getContextPath(); //输出结果 /AlfCat
如何获取文件绝对路径
String realPath=getServletContext().getRealPath("uploadFile"); 其中uploadFile是在工程下创建的一个文件夹,用于存放上传的文件 //输出结果:D:\apache-tomcat-7.0.37_x64\wtpwebapps\AlfCat\uploadFile
核心代码如下,写在doPost()方法里
DiskFileItemFactory factory=new DiskFileItemFactory(); ServletFileUpload upload=new ServletFileUpload(factory); List<FileItem> itemsList=upload.parseRequest(request); for(FileItem f:itemsList){ if(f.isFormField()){ //表单数据项 String fieldName=f.getFieldName(); String fieldValue=f.getString(); System.out.println(fieldName); System.out.println(fieldValue); }else{ //文件项 String fileName=f.getName(); InputStream in=f.getInputStream(); OutputStream out=new FileOutputStream(new File(realPath,fileName)); IOUtils.copy(in, out); in.close(); out.close(); } }
前台尽量别输入别的更多的<input />标签,会影响filedValue的获取。之后会有一个工具类发布更改这种毛病。
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- ASP实现文件上传的方法
- php轻松实现文件上传功能
- PHP文件上传问题汇总(文件大小检测、大文件上传处理)
- .net文件上传时实现通过文件头确认文件类型的方法
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
- ASP的chr(0)文件上传漏洞原理和解决方法介绍
- asp.net上传文件到数据库的解决方案
- javascript实现校验文件上传控件实例
- ajax 异步上传带进度条视频并提取缩略图
- jQuery插件实现文件上传功能(支持拖拽)
- jQuery实现文件上传进度条特效
- JQuery fileupload插件实现文件上传功能
- jQuery文件上传控件 Uploadify 详解
- 分享20多个很棒的jQuery 文件上传插件或教程