首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jsp的java程序中获取和使用上传文件的内容?

问如何在jsp的java程序中获取和使用上传文件的内容?
EN

Stack Overflow用户
提问于 2011-09-07 19:53:31
回答 1查看 9.6K关注 0票数 2

我写了一个超文本标记语言代码来上传一个文件在jsp.now中,我必须采取这些数据,并使用jsp.can中的java程序,您请提供我如何实现这一点的示例代码。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-08 15:11:10

我注意到你的代码很有把握。请按照以下步骤操作

  1. 下载apache commons-fileupload和apache commons-io的二进制发行版( org.apache.commons.fileupload.disk packages.

依赖于Commons IO,因此在对这两个发行版执行continuing.)

  • Extract操作之前,请确保您的类路径中具有依赖项页面上提到的版本,并将commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar复制到WEB-INF/lib文件夹下。

  • 在Servlet中,您需要导入javax.servlet、javax.servlet.http、import java.io、d11、d12和FileUpload

演示:

在WEB-INF/classes文件夹下创建servlet文件

代码语言:javascript
复制
package com.me;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.File;
import java.util.List;
import java.util.Iterator;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;


public class FileUploadServlet extends HttpServlet
{
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response) 
                         throws ServletException, IOException
   {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        java.io.PrintWriter pw=response.getWriter();
        final String SUCCESS="/success.jsp";
        final String FAIL="/fail.jsp";
        if(isMultipart) 
         {
          try
           {

             FileItemFactory factory = new DiskFileItemFactory();
             ServletFileUpload upload = new ServletFileUpload(factory);
             List items = upload.parseRequest(request);
             pw.print("total : " + items.size());
             Iterator iter = items.iterator();
             while (iter.hasNext()) 
             {
                FileItem item = (FileItem) iter.next();
             pw.print("total : " + item);
                if(!item.isFormField()) 
                  {
                     String fileName = item.getName();
                     String destFilePath=getServletContext().getRealPath("/upload/" + fileName);
                     File uploadedFile = new File(destFilePath);
                     item.write(uploadedFile);
                   }
              }
             request.setAttribute("message","file has been uploaded successfully!");
           }catch(Exception ex)
           {

              ex.printStackTrace();
              request.setAttribute("message","Cannot upload : " + ex.getMessage());
              getServletContext().getRequestDispatcher(FAIL).forward(request,response);
           }
           getServletContext().getRequestDispatcher(SUCCESS).forward(request,response);
        }
   }
}

在WEB-INF/web.xml中配置/注册servlet

代码语言:javascript
复制
<web-app>
 <servlet>
    <servlet-name>fileupload</servlet-name>
    <servlet-class>com.me.FileUploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>fileupload</servlet-name>
    <url-pattern>/fileupload</url-pattern>
 </servlet-mapping>
</web-app>

视图的内容(upload.jsp)。

注意:将的enctype属性设置为multipart/form-data

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data" action="fileupload">
  <input type="file" name="file"/>
  <input type="submit"/>
</form>

success.jsp和fail.jsp的内容

代码语言:javascript
复制
${message}

在context的根目录下创建一个名为upload的文件夹。

JSP版本(这不是推荐的方式)

upload1.jsp

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data" 

action="showfile.jsp">
  <input type="file" name="file"/>
  <input type="submit"/>
</form>

showfile.jsp

代码语言:javascript
复制
<%@ page import="java.io.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="org.apache.commons.fileupload.FileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>


<%

 boolean isMultipart = ServletFileUpload.isMultipartContent(request);
 String content="";

 if(isMultipart) 
     {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List items = upload.parseRequest(request);

        Iterator iter = items.iterator();
        while (iter.hasNext()) 
         {
            FileItem item = (FileItem) iter.next();
            if(!item.isFormField()) 
              {
                 BufferedInputStream buff=new BufferedInputStream(item.getInputStream());
                 byte []bytes=new byte[buff.available()];
                 buff.read(bytes,0,bytes.length);
                 content=new String(bytes);
              }
          }
     }
%>

Content of File:
<pre>
 <%=content%>
</pre>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7333449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档