﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-老翟-随笔分类-翻译</title><link>http://www.blogjava.net/apl330/category/48126.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 23 Mar 2011 05:20:53 GMT</lastBuildDate><pubDate>Wed, 23 Mar 2011 05:20:53 GMT</pubDate><ttl>60</ttl><item><title>翻译：使用Servlet实现文件上传</title><link>http://www.blogjava.net/apl330/archive/2011/03/23/346799.html</link><dc:creator>jack zhai</dc:creator><author>jack zhai</author><pubDate>Wed, 23 Mar 2011 00:52:00 GMT</pubDate><guid>http://www.blogjava.net/apl330/archive/2011/03/23/346799.html</guid><wfw:comment>http://www.blogjava.net/apl330/comments/346799.html</wfw:comment><comments>http://www.blogjava.net/apl330/archive/2011/03/23/346799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/apl330/comments/commentRss/346799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/apl330/services/trackbacks/346799.html</trackback:ping><description><![CDATA[<p>原文地址：http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm<br />
<br />
&nbsp; </p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">一个</span>Servlet<span style="font-family: 宋体">可以通过</span>HTML<span style="font-family: 宋体">表单标签将文件上传到服务器。支待上传的有文本、图像及任何文件。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><strong><span style="font-family: 宋体; font-size: 14pt">创建文件上传表单：</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">下面的</span>html<span style="font-family: 宋体">代码创建了一个上传表单。创建过程需要注意以下几点：</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings">l&nbsp;</span>form<span style="font-family: 宋体">标签中的</span><strong>method</strong><span style="font-family: 宋体">属性必须设置为</span><strong>POST</strong><span style="font-family: 宋体">，即</span>GET<span style="font-family: 宋体">方法是不可以的。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings">l&nbsp;</span>form<span style="font-family: 宋体">标签中的</span><strong>enctype</strong><span style="font-family: 宋体">属性应该设置为</span><strong>multipart/form-data</strong><span style="font-family: 宋体">。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings">l&nbsp;</span>from<span style="font-family: 宋体">标签中的</span><strong>action</strong><span style="font-family: 宋体">属性应该与服务器后台的</span>servlet<span style="font-family: 宋体">映射路径相同。接下来的实例，我们将使用</span><strong>UploadServlet</strong><span style="font-family: 宋体">实现文件上传。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings">l&nbsp;</span><span style="font-family: 宋体; color: black">要上传一个文件，你应该使用一个</span><span style="font-family: 'Arial','sans-serif'; color: black">&lt;input type=&#8221;file&#8221;.../&gt;</span><span style="font-family: 宋体; color: black">标记。要多个文件上传，必须包含多个具有不同的名称属性值的</span><span style="font-family: 'Arial','sans-serif'; color: black">&lt;input type=&#8221;file&#8221;.../&gt;</span><span style="font-family: 宋体; color: black">标记。</span><span style="font-family: 'Arial','sans-serif'; color: black">The browser associates a Browse button with each of them</span><span style="font-family: 宋体; color: black">。</span></p>
<p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;html&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;head&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;title&gt;File Uploading Form&lt;/title&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;/head&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;body&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;h3&gt;File Upload:&lt;/h3&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">Select a file to upload: &lt;br /&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;form action="UploadServlet" method="post"</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enctype="multipart/form-data"&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;input type="file" name="file" size="50" /&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;br /&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;input type="submit" value="Upload File" /&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;/form&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;/body&gt;</span></p>
            <p style="text-align: left; vertical-align: baseline; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9.5pt">&lt;/html&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">以上代码将得到以下效果。你可以在本地</span>PC<span style="font-family: 宋体">上选择一个文件。当你点击&#8220;</span>Upload File<span style="font-family: 宋体">&#8221;，表单将会随着你选择的文件一起被提交。</span></p>
<p><strong><span style="font-family: 宋体; font-size: 14pt">后台</span></strong><strong><span style="font-size: 14pt">servlet</span></strong><strong><span style="font-family: 宋体; font-size: 14pt">：</span></strong></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">以下</span>UploadServlet servlet<span style="font-family: 宋体">将接收上传的文件并将其保存入</span><span style="font-family: 宋体; color: black; font-size: 10pt">&lt;Tomcat-installation-directory&gt;/webapps/data</span><span style="font-family: 宋体; color: black; font-size: 10pt">文件夹。这个文件夹的名称可以通过外部配置文件web.xml中的context-param元素内容增加。代码如下：</span></p>
<p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm" valign="top" width="568">
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;web-app&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">....</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;context-param&gt; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Location to store uploaded file&lt;/description&gt; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;file-upload&lt;/param-name&gt; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c:"apache-tomcat-5.5.29"webapps"data"</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/param-value&gt; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;/context-param&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">....</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;/web-app&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">以下是实现了多文件同时上传功能的</span>UploadServlet<span style="font-family: 宋体">。在此之前您必须确定以下几点：</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings">l&nbsp;</span><span style="font-family: 宋体">以下实例依赖</span>F&nbsp;ileUpload<span style="font-family: 宋体">类，所以您须将最新版的</span><strong><span style="font-family: 宋体; color: black">commons-fileupload.x.x.jar</span></strong><span style="font-family: 宋体; color: black">放到您的classpath下。可以从这里下载：</span><span style="font-family: 宋体; color: black"><a href="http://commons.apache.org/fileupload/" target="_blank">http://commons.apache.org/fileupload/</a></span><span style="font-family: 宋体; color: black">。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings; font-size: 14pt">l&nbsp;</span><span style="font-family: 宋体">FileUpload</span><span style="font-family: 宋体">类依赖于Commons IO包，所以您须将最新版commons-fileupload.x.x.jar放到您的classpath下。可以从这里下载：</span><span style="font-family: 宋体; color: black"><a href="http://commons.apache.org/io/" target="_blank">http://commons.apache.org/io/</a></span><span style="font-family: 宋体; color: black">。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings; font-size: 14pt">l&nbsp;</span><span style="font-family: 宋体">在测试以下例子的时候，您应该上传小于<em>maxFileSize</em>的文件，否则无法上传。</span></p>
<p style="text-indent: -21pt; margin-left: 21pt" class="MsoNormal"><span style="font-family: Wingdings; font-size: 14pt">l&nbsp;</span><span style="font-family: 宋体">事先确定你已经建议好文件夹：</span><span style="font-family: 宋体; color: black">c:"temp</span><span style="font-family: 宋体">和</span><span style="font-family: 宋体; color: black">c:"apache-tomcat-5.5.29"webapps"data</span><span style="font-family: 宋体; color: black">。</span></p>
<p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm" valign="top" width="568">
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">// Import required java libraries</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import java.io.*;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import java.util.*;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import javax.servlet.ServletConfig;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import javax.servlet.ServletException;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import javax.servlet.http.HttpServlet;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import javax.servlet.http.HttpServletRequest;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import javax.servlet.http.HttpServletResponse;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import org.apache.commons.fileupload.FileItem;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import org.apache.commons.fileupload.FileUploadException;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import org.apache.commons.fileupload.disk.DiskFileItemFactory;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import org.apache.commons.fileupload.servlet.ServletFileUpload;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">import org.apache.commons.io.output.*;</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">public class UploadServlet extends HttpServlet {</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;private boolean isMultipart;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; private String filePath;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; private int maxFileSize = 50 * 1024;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; private int maxMemSize = 4 * 1024;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; private File file ;</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; public void init( ){</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get the file location where it would be stored.</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filePath = </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getServletContext().getInitParameter("file-upload"); </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;}</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; public void doPost(HttpServletRequest request, </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, java.io.IOException {</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;// Check that we have a file upload request</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isMultipart = ServletFileUpload.isMultipartContent(request);</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/html");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.io.PrintWriter out = response.getWriter( );</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( !isMultipart ){</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;html&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;head&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;title&gt;Servlet upload&lt;/title&gt;");&nbsp;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("&lt;/head&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;body&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;p&gt;No file uploaded&lt;/p&gt;"); </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("&lt;/body&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;out.println("&lt;/html&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DiskFileItemFactory factory = new DiskFileItemFactory();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // maximum size that will be stored in memory</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; factory.setSizeThreshold(maxMemSize);</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Location to save data that is larger than maxMemSize.</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; factory.setRepository(new File("c:""temp"));</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create a new file upload handler</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletFileUpload upload = new ServletFileUpload(factory);</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // maximum file size to be uploaded.</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upload.setSizeMax( maxFileSize );</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{ </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Parse the request to get file items.</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List fileItems = upload.parseRequest(request);</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Process the uploaded file items</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator i = fileItems.iterator();</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;html&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;head&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;title&gt;Servlet upload&lt;/title&gt;");&nbsp;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("&lt;/head&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;body&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( i.hasNext () ) </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileItem fi = (FileItem)i.next();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !fi.isFormField () )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get the uploaded file parameters</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fieldName = fi.getFieldName();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileName = fi.getName();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String contentType = fi.getContentType();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isInMemory = fi.isInMemory();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;long sizeInBytes = fi.getSize();</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Write the file</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( fileName.lastIndexOf("""") &gt;= 0 ){</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = new File( filePath + </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName.substring( fileName.lastIndexOf(""""))) ;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;file = new File( filePath + </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName.substring(fileName.lastIndexOf("""")+1)) ;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi.write( file ) ;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("Uploaded Filename: " + fileName + "&lt;br&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;/body&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;/html&gt;");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; }catch(Exception ex) {</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(ex);</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; }</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; public void doGet(HttpServletRequest request, </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, java.io.IOException {</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new ServletException("GET method used with " +</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getClass( ).getName( )+": POST method required.");</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; } </span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">}</span></pre>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p><strong><span style="font-size: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong><span style="font-family: 宋体; font-size: 14pt">编译并运行Servlet</span></strong></p>
<p><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">编译以上UploadServlet并在web.xml中创建必须的实体，如下：</span></p>
<p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm" valign="top" width="568">
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;servlet&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; &lt;servlet-name&gt;UploadServlet&lt;/servlet-name&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; &lt;servlet-class&gt;UploadServlet&lt;/servlet-class&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;/servlet&gt;</span></pre>
            <pre style="vertical-align: baseline">&nbsp;</pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;servlet-mapping&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; &lt;servlet-name&gt;UploadServlet&lt;/servlet-name&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&nbsp;&nbsp; &lt;url-pattern&gt;/UploadServlet&lt;/url-pattern&gt;</span></pre>
            <pre style="vertical-align: baseline"><span style="color: black; font-size: 9.5pt">&lt;/servlet-mapping&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">现在可以尝试使用你创建的</span>HTML<span style="font-family: 宋体">表单上传文件。当你访问</span><a href="http://localhost:8080/UploadFile.htm">http://localhost:8080/UploadFile.htm</a><span style="font-family: 宋体">，浏览器里将会显示如下效果，您可以从本地上传你想要上传的任何文件。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">如果您的</span>servlet<span style="font-family: 宋体">脚本运行成功，您的文件上传在</span>c:"apache-tomcat-5.5.29"webapps"data"directory<span style="font-family: 宋体">文件夹。</span></p>
<img src ="http://www.blogjava.net/apl330/aggbug/346799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/apl330/" target="_blank">jack zhai</a> 2011-03-23 08:52 <a href="http://www.blogjava.net/apl330/archive/2011/03/23/346799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>