使用javax.servlet.http.Part类上传文件

使用的是Servlet 3.0 新的特征标注(Annotaion)类描述部署,一些低版本的服务器需要使用标准依赖部署描述文件(web.xml)来部署,另外Part也是Java EE 6.0新增的类,Part是一个接口继承于javax.servlet.http,代表一部分表单项目接收来自multipart/form-data的POST的请求。

!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>上传文件</title>

    </head>
    <body>
        <div class="container">
            <form action="upload.do" method="post" enctype="multipart/form-data">
                <table>
                    <tr>
                        <td><label for="file">上传文件:</label></td>
                        <td><input type="file" id="file" name="picture" value=""/></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" value="提交"/></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>
@MultipartConfig
@WebServlet(name = "UploadServlet", urlPatterns = {"/upload.do"})
public class UploadServlet extends HttpServlet {

    private String contextPath;

    @Override
    public void init() throws ServletException {
        contextPath = getServletContext().getRealPath("/");
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        Part part = request.getPart("picture");
        String fileName = getFileName(part);
        writeTo(fileName, part);

        //forward到显示
        request.setAttribute("fileName", fileName);
        request.getRequestDispatcher("show.jsp").forward(request, response);
    }

    //取得上传文件名
    private String getFileName(Part part) {
        String header = part.getHeader("Content-Disposition");
        String fileName = header.substring(header.indexOf("filename=\"") + 10,
                header.lastIndexOf("\""));
        return fileName;
    }

    //存储文件
    private void writeTo(String fileName, Part part) throws IOException, FileNotFoundException {
        InputStream in = part.getInputStream();
        OutputStream out = new FileOutputStream(contextPath + fileName);
        byte[] buffer = new byte[1024];
        int length = -1;
        while ((length = in.read(buffer)) != -1) {
            out.write(buffer, 0, length);
        }
        in.close();
        out.close();
    }
}

  

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>图片显示</h1>
        <a href="${fileName}">${fileName}</a>
    </body>
</html>

  

  

时间: 2024-10-11 17:03:27

使用javax.servlet.http.Part类上传文件的相关文章

利用WebRequest类上传文件

说明:1.WebRequest类是一个抽象类,所以上传类实际使用的是其子类 2.打开Fiddler软件,监视正常网页的文件上传,可以看到http协议的请求和响应信息,简略说明 (第一行:请求说明 POST http://localhost/UpLoad.aspx HTTP/1.1 (请求类型:post,请求地址: http://localhost/UpLoad.aspx,http协议类型:HTTP/1.1) 第二行至多行:请求头(一系列的 key:value) User-Agent: Mozil

Servlet中服务器端接收上传文件操作

最近老大分了一个任务,客户端使用C#实现了文件上传,要求我实现服务器端的文件接收保存到本地并且接收成功返回给客户端一个标识.在网上看了一下,大多数都是客户端的文件上传操作,很少有写服务端的处理,借此次机会,分享一下自己在服务端实现的处理逻辑.废话不多说,直接上代码 public class ReciveServlet extends HttpServlet { private static final long serialVersionUID = 1Lpublic ReciveServlet(

FileUtils类上传文件图片

import java.io.File; import java.util.Scanner; import org.apache.commons.io.FileUtils; public class UploadFile { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String SourceLocation = sc.nextLine(); String [] sources = S

上传文件 从相机、图库获取与截取图片

Activity /**实际开发涉及文件上传.下载都不会自己写这些代码,一般会集成第三方库来完成,比如android-async-http,okhttp,xUtils等*/ public class UploadFileActivity extends ListActivity {     private ImageView imageView;     private TextView tv_info;     public static final int uid = 10415362;  

Servlet上传文件

1.准备工作 (1)利用FileUpload组件上传文件,需要到apache上下载commons-fileupload-1.3.1.jar 下载地址:http://commons.apache.org/fileupload/ (2)由于文件上传还得有IO流传输,需要到apache上下载commons-io-2.4.jar 下载地址:http://commons.apache.org/io/ 2.正式开发 (1)新建文件上传界面 file.jsp: <%@ page language="ja

servlet上传文件(四)

1.servlet上传文件 servlet上传文件就是将客户端的文件上传到服务器端. 向服务器发送数据时,客户端发送的http请求正文采用"multipart/form-data"数据类型,他表示复杂的多个子部分的复合表单. 为了简化"multipart/form-data"数据的处理过程.可以使用Apache组织提供是的两个开源包来来实现上传. fileupload软件包(commons-fileupload-1.2.1.jar),负责文件上传的软件包. io软件

文件上传工具类——傻瓜式上传文件

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6128382.html 在前面  (http://www.cnblogs.com/ygj0930/p/6073505.html)  我们提到过Javaweb开发的文件上传功能的实现,需要借助第三方jar包,并且要创建factory呀.设置临时文件区路径呀等等,十分繁琐.而作为一个开发人员,不可能每次实现文件上传时都从头到尾做那么多工序.这时候,我们可以把这些繁琐的工作封装起来,把一个个功能做成以供调用的方法.

Flex和Servlet结合上传文件

1.准备工作 (1)下载文件上传的组件,commons-fileupload-1.3.1.jar (2)下载文件输入输出jar,commons-io-2.4.jar (3)有关servlet的jar包,servlet-api.jar 2.正式开发 (1)新建一个web项目工程,FlexFileUpload (2)在src新建一个上传文件的servlet FlexFileUploadServlet.java: package com.you.upload.servlet; import java.

一个用于上传文件的servlet

1.jsp页面操作文件: 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 2 <html> 3 <head> 4 <title>上传文件 </title> 5 <link rel="stylesheet" type="text/css" href=