个sevlet实现文件上传

闲来无事,写一个sevlet实现文件上传!微笑

大部分人喜欢用别人写好的包,如commons-fileupload-1.2.2.jar,来实现文件上传,还有另外有一个包smartupload包 ,这两种方式!大笑

http协议文件上传,通过设置页面中的form的参数enctype为multipart/form-data,参数method="post"来实现文件上传,具体可以参考http文档,RFC_2616_HTTP_1[1].1_超文本传输协议_中文版。servlet通过request.getInputStream()得到输入文件流;参数通过request.getAttribute("name");,切记不要用request.getParameter("name").为啥,各位可以百度一下方法区别。文件可以通过得到文件名(通过request.getAttribute("fileName")),再加路径可以得到new File(FilePath,FileName)。本例可以通过新建一个对像new ParseServletInputStream(HttpServletRequest request,String FilePath),或new ParseServletInputStream(request)来解析输入流,并能通过此类删除上传的文件

本列主要有四个类,分别为ParseServletInputStream.java,ParseRequest.java,BodyRequest,AnnotationLogger;一个接口MultipartParameter定义输入流中的参数。

1.ParseServletInputStream类主要用来接收request,设置文件保存路径及删除上传文件。

源码中设置了两个此类构造方法,一个只有一个参数(request),一个另带一个文件路径的构造方法。源码如下:

2.ParseRequest是一个解析输入流抽像类

定义了一些解析流的公共方法。输入流中的参数有两种,一种参数内型是文件(input type="file "),另一种是参数类型是字符串(<input type="text"> ),参数内型是文件头要解析四行,参数类型是字符串头要解析三行,具体可参考http协议。所以抽象类定义解析四行方法,还有两个共用的方法,解析空行的和清空参数,源文件如下:

3.BodyRequest用来解析输入流

BodyRequest有两个内部类(FileRequest,ParameterRequest)都继承了ParseRequest,FileRequest主要用来解析流是文件类型的类,,ParameterRequest主要用来解析是参数 的类

4.MultipartParameter接口主要定义文件上传参数类型

可以参考http协议,主要定义一些http协议参数名称,源码如下

5.AnnotationLogger类用来注释掉logger和去掉注释掉logger

此类主要用来增加,或删除源文件中的loger输出,如果要logger输出,要增加log4j包,本列版本是log4j-1.2.15.jar

6.应用工程例子

源文件如上,工程下载,可以把项目引入到myeclipse,布暑到tomcat中。通过index.jsp提交form上传文件,FileUpLoad类是(servlet)接收输入流,处理结果通过response输出页面。

index.jsp运行页面如下

servlet接收如下:

文件保存在图片:

如果看不明白,可加Q(4758 2019),如要转载,请注名出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种用于构建用户界面的JavaScript框架,而Servlet是Java语言的服务器端技术。要实现Vue和Servlet的结合完成文件功能,需要以下步骤: 1. 首先,在Vue的组件中创建一个文件的表单,该表单包含一个文件选择框和一个提交按钮。 2. 当用户选择要上文件后,Vue将获取到文件对象,并以FormData的形式将文件数据和其他表单数据一起发送给服务器。 3. 在Vue中,可以使用axios或其他类似库向服务器发送HTTP请求。创建一个POST请求,将FormData对象作为请求的数据,并将请求发送到Servlet的URL。 4. 在Servlet中,创建一个POST方法的处理函数。在该处理函数中,获取到上文件和其他表单数据。可以使用HttpServletRequest的getPart方法来获取文件,使用getParameter方法来获取其他表单数据。 5. 使用文件的InputStream将上文件数据写入到服务器的指定位置。可以使用FileOutputStream将文件数据写入到磁盘上的指定文件夹中。 6. 处理完文件后,可以通过HttpServletResponse返回给前端一个上成功的消息或者其他需要的数据。 在Vue和Servlet的结合实现文件功能时,需要注意跨域问题。可以在Servlet的响应中设置Access-Control-Allow-Origin头部信息,允许来自Vue前端的跨域请求。 以上是使用Vue和Servlet实现文件的基本步骤,根据具体的需求和情况可以进行相应的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值