java怎么实现文件的上传功能

java怎么实现文件的上传功能

今天小编给大家分享一下java怎么实现文件的上传功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、上传界面

<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><title>Inserttitlehere</title></head><body><!--文件上传对表单的要求1、表单中的请求和提交的方式必须是post2、表单中应该指定提交的请求为multipart请求,通过在form表单中添加enctype属性为multipart/form-data3、表单中要有file元素--><!--${pageContext.request.contextPath}/registerServlet--><formaction="${pageContext.request.contextPath}/registerServlet"method="post"enctype="multipart/form-data">姓名:<inputtype="text"name="name"/><br><hr>年龄:<inputtype="text"name="age"/><br><hr>照片:<inputtype="file"name="photo"/><br><hr><inputtype="submit"value="注册"><hr></form></body></html>

二、Servlet处理

packagecom.ui.servlet;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importorg.apache.tomcat.jni.OS;importcom.mysql.jdbc.Field;/***ServletimplementationclassRegisterServlet*/@WebServlet("/registerServlet")publicclassRegisterServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;/***@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)*/protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubif(!ServletFileUpload.isMultipartContent(request)){thrownewRuntimeException("当前不支持文件上传");}try{DiskFileItemFactoryfactory=newDiskFileItemFactory();//设置使用临时文件的边界值,大鱼该值得文件上传会先保存在临时文件中,否则上传文件会直接写入到内存当中去//单位字节在这里设置的为1mfactory.setSizeThreshold(1024*1024*1);//设置临时文件Stringtemppath=this.getServletContext().getRealPath("/temp");Filefile2=newFile(temppath);factory.setRepository(file2);//创建文件上传核心组件ServletFileUploadfileUpload=newServletFileUpload(factory);//设置单个文件的大小不超过多少fileUpload.setFileSizeMax(1024*1024*2);//上传多个文件的要求总的大小不超过多少fileUpload.setSizeMax(1024*1024*5);fileUpload.setHeaderEncoding("utf-8");//设置每一个item的字符编码为utf-8List<FileItem>items=fileUpload.parseRequest(request);for(FileItemfileItem:items){if(fileItem.isFormField()){Stringfilename=fileItem.getFieldName();StringfileValue=fileItem.getString("utf-8");System.out.println(filename+"----"+fileValue);}else//如果是文件上传表单项{Stringfilename=fileItem.getName();InputStreaminputStream=fileItem.getInputStream();//获取表单项的输入流Stringpath=this.getServletContext().getRealPath("/fileContents");Filefile=newFile(path,filename);OutputStreamoutputStream=newFileOutputStream(file);intlen=-1;byte[]bs=newbyte[1024];while((len=inputStream.read(bs))!=-1){outputStream.write(bs,0,len);}outputStream.close();inputStream.close();//删除临时文件fileItem.delete();}}}catch(Exceptione){//TODO:handleexceptionSystem.out.println(e);}}}

三、实现结果

以上就是“java怎么实现文件的上传功能”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。

发布于 2022-02-07 23:13:44
收藏
分享
海报
0 条评论
31
上一篇:mybatis resultmap怎么为对象赋值的调用顺序 下一篇:怎么为Xamarin.Forms的导航栏增加搜索功能
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码