我写了一个超文本标记语言代码来上传一个文件在jsp.now中,我必须采取这些数据,并使用jsp.can中的java程序,您请提供我如何实现这一点的示例代码。
谢谢
发布于 2011-09-08 15:11:10
我注意到你的代码很有把握。请按照以下步骤操作
org.apache.commons.fileupload.disk packages.依赖于Commons IO,因此在对这两个发行版执行continuing.)
commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar复制到WEB-INF/lib文件夹下。
javax.servlet、javax.servlet.http、import java.io、d11、d12和FileUpload演示:
在WEB-INF/classes文件夹下创建servlet文件
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
<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
<form method="post" enctype="multipart/form-data" action="fileupload">
<input type="file" name="file"/>
<input type="submit"/>
</form>success.jsp和fail.jsp的内容
${message}在context的根目录下创建一个名为upload的文件夹。
JSP版本(这不是推荐的方式)
upload1.jsp
<form method="post" enctype="multipart/form-data"
action="showfile.jsp">
<input type="file" name="file"/>
<input type="submit"/>
</form>showfile.jsp
<%@ 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>https://stackoverflow.com/questions/7333449
复制相似问题