<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "JSP精選實用範例(二):檔案上傳"]]></title>
		<link>https://forum.andowson.com/posts/list/5.page</link>
		<description><![CDATA[Latest messages posted in the topic "JSP精選實用範例(二):檔案上傳"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 預先安裝函式庫：[url=http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi]Apache Commons FileUpload[/url], [url=http://commons.apache.org/proper/commons-io/download_io.cgi]Apache Commons IO[/url] 
<br>
程式碼： 
<br>
fileupload.html: 
<br>
[code=html]&lt;html&gt; 
<br>
&lt;head&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=big5" /&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
<p><font size="5" color="#ff0000"><b>檔案上傳</b></font></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload.jsp"&gt; 
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20" /&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50" /&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳" /&gt; &lt;input type="reset" value="清除" /&gt;</p>
<br>
&lt;/form&gt; 
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt;[/code] 
<br>
fileupload.jsp: 
<br>
[code] 
<br>
&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.File"%&gt; 
<br>
&lt;%@ page import="java.util.Iterator"%&gt; 
<br>
&lt;%@ page import="java.util.List"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;% 
<br>
 String saveDirectory = application.getRealPath("/upload"); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart="+isMultipart+"&lt;br&gt;"); 
<br>
<br>
 // Create a factory for disk-based file items 
<br>
 FileItemFactory factory = new DiskFileItemFactory(); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(factory); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener(){ 
<br>
 private long megaBytes = -1; 
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength 
<br>
 + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 // Parse the request 
<br>
 List /* FileItem */ items = upload.parseRequest(request); 
<br>
<br>
 // Process the uploaded items 
<br>
 Iterator iter = items.iterator(); 
<br>
 while (iter.hasNext()) { 
<br>
 FileItem item = (FileItem) iter.next(); 
<br>
<br>
 if (item.isFormField()) { 
<br>
 // Process a regular form field 
<br>
 //processFormField(item); 
<br>
 String name = item.getFieldName(); 
<br>
 String value = item.getString(); 
<br>
 value = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 out.println(name + "=" + value+"&lt;br&gt;"); 
<br>
 } else { 
<br>
 // Process a file upload 
<br>
 //processUploadedFile(item); 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 boolean isInMemory = item.isInMemory(); 
<br>
 long sizeInBytes = item.getSize(); 
<br>
 out.println("fieldName="+fieldName+"&lt;br&gt;"); 
<br>
 out.println("fileName="+fileName+"&lt;br&gt;"); 
<br>
 out.println("contentType="+contentType+"&lt;br&gt;"); 
<br>
 out.println("isInMemory="+isInMemory+"&lt;br&gt;"); 
<br>
 out.println("sizeInBytes="+sizeInBytes+"&lt;br&gt;"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 fileName= FilenameUtils.getName(fileName); 
<br>
 out.println("fileName saved="+fileName+"&lt;br&gt;"); 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 item.write(uploadedFile); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
%&gt; 
<br>
[/code] 
<br>
注意： 
<br>
請自行在您網頁應用程式的根目錄下建立一個upload的子目錄，並確認或設定讓Tomcat對upload目錄具有可寫入權限(Linux環境)。 
<br>
參考資料： 
<br>
http://commons.apache.org/proper/commons-fileupload/using.html]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/300.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/300.page</link>
				<pubDate><![CDATA[Sat, 15 Dec 2007 12:27:25]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 使用Streaming API的方式： 
<br>
程式碼： 
<br>
fileupload_streaming.html: 
<br>
[code=html] 
<br>
&lt;html&gt; 
<br>
&lt;head&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
<p><font size="5" color="#ff0000"><b>檔案上傳</b></font></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload_streaming.jsp"&gt; 
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20"&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50"&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳"&gt; &lt;input type="reset" value="清除"&gt;</p>
<br>
&lt;/form&gt; 
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt;[/code] 
<br>
fileupload_streaming.jsp: 
<br>
[code]&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.util.Streams"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;% 
<br>
 String saveDirectory = application.getRealPath("/upload"); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart="+isMultipart+"&lt;br&gt;"); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener(){ 
<br>
 private long megaBytes = -1; 
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength 
<br>
 + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 // Parse the request 
<br>
 FileItemIterator iter = upload.getItemIterator(request); 
<br>
 while (iter.hasNext()) { 
<br>
 FileItemStream item = iter.next(); 
<br>
 String name = item.getFieldName(); 
<br>
 InputStream stream = item.openStream(); 
<br>
 if (item.isFormField()) { 
<br>
 String value = Streams.asString(stream); 
<br>
 out.println(name + "=" + value+"&lt;br&gt;"); 
<br>
 } else { 
<br>
 System.out.println("File field " + name + " with file name " 
<br>
 + item.getName() + " detected."); 
<br>
 // Process the input stream 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 out.println("fieldName="+fieldName+"&lt;br&gt;"); 
<br>
 out.println("fileName="+fileName+"&lt;br&gt;"); 
<br>
 out.println("contentType="+contentType+"&lt;br&gt;"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 fileName= FilenameUtils.getName(fileName); 
<br>
 out.println("fileName saved="+fileName+"&lt;br&gt;"); 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 FileOutputStream uploadedFileStream = 
<br>
 new FileOutputStream(uploadedFile); 
<br>
 Streams.copy(stream, uploadedFileStream, true); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
%&gt; 
<br>
[/code] 
<br>
參考資料： 
<br>
http://commons.apache.org/fileupload/streaming.html]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/301.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/301.page</link>
				<pubDate><![CDATA[Sat, 15 Dec 2007 12:50:49]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 增加檔案大小限制及檔案類型的篩選： 
<br>
程式碼： 
<br>
fileupload_control.html: 
<br>
[code=xhtml] 
<br>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt; 
<br>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; 
<br>
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 
<br>
&lt;head&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;style type="text/css"&gt; 
<br>
&lt;!-- 
<br>
.topic {color: #FF0000; font-size: 1.5em; font-weight: bold} 
<br>
--&gt; 
<br>
&lt;/style&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
&lt;p class="topic"&gt;檔案上傳
<p></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload_control.jsp"&gt; 
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20" /&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50" /&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳" /&gt; &lt;input type="reset" value="清除" /&gt;</p>
<br>
&lt;/form&gt; 
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt; 
<br>
[/code] 
<br>
<br>
fileupload_control.jsp: 
<br>
[code] 
<br>
&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.File"%&gt; 
<br>
&lt;%@ page import="java.util.Iterator"%&gt; 
<br>
&lt;%@ page import="java.util.List"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;%! 
<br>
 int yourMaxMemorySize = 1024 * 1024 * 1024; 
<br>
 File yourTempDirectory = new File("/tmp"); 
<br>
 int yourMaxRequestSize = 100 * 1024 * 1024; 
<br>
 boolean writeToFile = true; 
<br>
 String allowedFileTypes = ".txt .pdf .doc .ppt .xls .csv .dbf .gif .jpg .jpeg .png .swf .htm .html .zip .rar"; 
<br>
%&gt; 
<br>
&lt;% 
<br>
 String saveDirectory = application.getRealPath("/upload"); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart=" + isMultipart + "&lt;br&gt;"); 
<br>
<br>
 // Create a factory for disk-based file items 
<br>
 DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(factory); 
<br>
<br>
 // Set overall request size constraint 
<br>
 upload.setSizeMax(yourMaxRequestSize); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener() { 
<br>
 private long megaBytes = -1; 
<br>
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 try { 
<br>
 // Parse the request 
<br>
 List /* FileItem */items = upload.parseRequest(request); 
<br>
<br>
 // Process the uploaded items 
<br>
 Iterator iter = items.iterator(); 
<br>
 while (iter.hasNext()) { 
<br>
 FileItem item = (FileItem) iter.next(); 
<br>
<br>
 if (item.isFormField()) { 
<br>
 // Process a regular form field 
<br>
 //processFormField(item); 
<br>
 String name = item.getFieldName(); 
<br>
 String value = item.getString("UTF-8"); 
<br>
 out.println(name + "=" + value + "&lt;br /&gt;"); 
<br>
 } else { 
<br>
 // Process a file upload 
<br>
 //processUploadedFile(item); 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 boolean isInMemory = item.isInMemory(); 
<br>
 long sizeInBytes = item.getSize(); 
<br>
 out.println("fieldName=" + fieldName + "&lt;br /&gt;"); 
<br>
 out.println("fileName=" + fileName + "&lt;br /&gt;"); 
<br>
 out.println("contentType=" + contentType + "&lt;br /&gt;"); 
<br>
 out.println("isInMemory=" + isInMemory + "&lt;br /&gt;"); 
<br>
 out.println("sizeInBytes=" + sizeInBytes + "&lt;br /&gt;"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 if (writeToFile) { 
<br>
 fileName = FilenameUtils.getName(fileName); 
<br>
 out.println("fileName to be saved=" + fileName + "&lt;br /&gt;"); 
<br>
 String extension = FilenameUtils.getExtension(fileName); 
<br>
 if (allowedFileTypes.indexOf(extension.toLowerCase()) != -1) { 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 item.write(uploadedFile); 
<br>
 } else { 
<br>
 out.println("上傳的檔案不能是" + extension + "&lt;br /&gt;"); 
<br>
 } 
<br>
 } else { 
<br>
 //InputStream uploadedStream = item.getInputStream(); 
<br>
 //... 
<br>
 //uploadedStream.close(); 
<br>
 // Process a file upload in memory 
<br>
 byte[] data = item.get(); 
<br>
 out.println("data size=" + data.length + "&lt;br /&gt;"); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
 } catch (FileUploadBase.SizeLimitExceededException ex1) { 
<br>
 out.println("上傳檔案超過最大檔案允許大小" + yourMaxRequestSize / (1024 * 1024) + "MB !"); 
<br>
 } 
<br>
%&gt; 
<br>
[/code] 
<br>
<br>
另外需要在web.xml中加上下列設定： 
<br>
[code=xml] 
<br>
&lt;web-app&gt; 
<br>
 ... 
<br>
 &lt;listener&gt; 
<br>
 &lt;listener-class&gt; 
<br>
 org.apache.commons.fileupload.servlet.FileCleanerCleanup 
<br>
 &lt;/listener-class&gt; 
<br>
 &lt;/listener&gt; 
<br>
 ... 
<br>
&lt;/web-app&gt; 
<br>
[/code] 
<br>
參考資料： 
<br>
http://commons.apache.org/fileupload/using.html]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/562.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/562.page</link>
				<pubDate><![CDATA[Mon, 23 Feb 2009 03:18:12]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 版大您好，請問一下為什麼我會出現這種錯誤 
<br>
我用tomcat 6.0，win XP sp3 上面的JAR檔也已丟至正確資料夾， 
<br>
感覺好像是request的問題，麻煩您幫忙解決一下。 感謝 
<br>
<br>
org.apache.jasper.JasperException: An exception occurred processing JSP page /test/fileupload.jsp at line 25 
<br>
<br>
22: 
<br>
23: // Check that we have a file upload request 
<br>
24: 
<br>
25: boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
26: 
<br>
27: out.println("isMultipart="+isMultipart+"&lt;br&gt;"); 
<br>
28:]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/694.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/694.page</link>
				<pubDate><![CDATA[Tue, 24 Nov 2009 16:38:37]]> GMT</pubDate>
				<author><![CDATA[ hannibal0416]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ hannibal0416您好： 
<br>
基本上您給的資訊太少，並不足以判斷問題出在哪裡，可能得請您再花點耐性，把Tomcat的log檔內容看一下，也許就可以找到原因了。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/695.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/695.page</link>
				<pubDate><![CDATA[Tue, 24 Nov 2009 20:54:23]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 由於有網友在問哪段可以取到上傳網頁的檔案說明的欄位的值？簡單說明如下： 
<br>
<br>
上傳網頁的檔案說明的欄位，包在第一個if內，註解有註明是regular form field那段，可以透過欄位名稱比對取得其值： 
<br>
<br>
[code]String fileDesc = null; 
<br>
... 
<br>
if (item.isFormField()) { 
<br>
 // Process a regular form field 
<br>
 //processFormField(item); 
<br>
 String name = item.getFieldName(); 
<br>
 String value = item.getString("UTF-8"); 
<br>
 out.println(name + "=" + value+"
<br>
"); 
<br>
 if ("filedesc".equals(name)) { 
<br>
 fileDesc = value; 
<br>
 } 
<br>
} else { 
<br>
...[/code] 
<br>
<br>
另外如果有需要刪除檔案時，可以參考下列的範例（例如要刪除已上傳的檔案） 
<br>
[code] // Delete a file 
<br>
 public static boolean deleteFile(String filename) { 
<br>
 File f = new File(filename); 
<br>
 boolean result = false; 
<br>
 if (f.exists()) { 
<br>
 result = f.delete(); 
<br>
 if (result != true) { 
<br>
 System.out.println("Delete file failed: " + f.getName()); 
<br>
 } 
<br>
 } 
<br>
 return result; 
<br>
 }[/code]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/735.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/735.page</link>
				<pubDate><![CDATA[Wed, 13 Jan 2010 21:20:12]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 如果一次上傳多個檔案，然後要分別儲存上傳的檔案名稱和說明欄資料，可以參考這個範例。 
<br>
程式碼： 
<br>
fileupload_streaming.html: 
<br>
[code=html] 
<br>
&lt;html&gt; 
<br>
&lt;head&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
<p><font size="5" color="#ff0000"><b>檔案上傳</b></font></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload_streaming.jsp"&gt; 
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20"&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50"&gt;</p>
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20"&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50"&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳"&gt; &lt;input type="reset" value="清除"&gt;</p>
<br>
&lt;/form&gt; 
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt; 
<br>
[/code] 
<br>
<br>
fileupload_streaming.jsp: 
<br>
[code=java] 
<br>
&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.*"%&gt; 
<br>
&lt;%@ page import="java.util.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.util.Streams"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;% 
<br>
 String saveDirectory = application.getRealPath("/upload"); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart="+isMultipart+"&lt;br&gt;"); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener(){ 
<br>
 private long megaBytes = -1; 
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength 
<br>
 + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 // Parse the request 
<br>
 List&lt;String&gt; fileDescList = new ArrayList&lt;String&gt;(); 
<br>
 List&lt;String&gt; fileNameList = new ArrayList&lt;String&gt;(); 
<br>
 FileItemIterator iter = upload.getItemIterator(request); 
<br>
 while (iter.hasNext()) { 
<br>
 FileItemStream item = iter.next(); 
<br>
 String name = item.getFieldName(); 
<br>
 InputStream stream = item.openStream(); 
<br>
 if (item.isFormField()) { 
<br>
 String value = Streams.asString(stream); 
<br>
 out.println(name + "=" + value+"
<br>
"); 
<br>
 if ("filedesc".equals(name)) { 
<br>
 fileDescList.add(value); 
<br>
 } 
<br>
 } else { 
<br>
 System.out.println("File field " + name + " with file name " 
<br>
 + item.getName() + " detected."); 
<br>
 // Process the input stream 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 out.println("fieldName="+fieldName+"
<br>
"); 
<br>
 out.println("fileName="+fileName+"
<br>
"); 
<br>
 out.println("contentType="+contentType+"
<br>
"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 fileName= FilenameUtils.getName(fileName); 
<br>
 out.println("fileName saved="+fileName+"
<br>
"); 
<br>
 fileNameList.add(fileName); 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 FileOutputStream uploadedFileStream = 
<br>
 new FileOutputStream(uploadedFile); 
<br>
 Streams.copy(stream, uploadedFileStream, true); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
 for (int i = 0; i &lt; fileNameList.size(); i++) { 
<br>
 String fileDesc = fileDescList.get(i); 
<br>
 String fileName = fileNameList.get(i); 
<br>
 out.println(fileName+":"+fileDesc+"
<br>
"); 
<br>
 // save to database for future use 
<br>
 } 
<br>
%&gt; 
<br>
[/code]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/736.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/736.page</link>
				<pubDate><![CDATA[Thu, 14 Jan 2010 13:57:24]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問板大，檔案上傳時的說明(filedesc)輸入中文會出現亂碼，這該如何解決呢??]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/737.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/737.page</link>
				<pubDate><![CDATA[Thu, 14 Jan 2010 17:15:02]]> GMT</pubDate>
				<author><![CDATA[ victer0327]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 感謝版大的分享, 
<br>
<br>
本人是jsp, java 新手, 
<br>
剛剛正想在功課加上上傳的功能 , 搜尋之下 , 找到你的主題, 我真的太幸運了 ^^ 
<br>
<br>
在網上找了一下, 找不到明確的方法, 
<br>
所以想問問 安裝函式庫 該怎安裝 ? 
<br>
<br>
我正使用eclipse + tomcat 4.1 
<br>
<br>
在Apache Commons的網站我下載了 
<br>
commons-io-1.4-src.zip &amp; commons-fileupload-1.2.1-src.zip 
<br>
<br>
解壓後 發現內有很多不同的檔案, 
<br>
<br>
我是應該把以下兩個目錄個的檔案, 全部複製到我eclipse 的Project 內 ? 
<br>
commons-fileupload-1.2.1-src\src\java\org 
<br>
和 
<br>
commons-io-1.4-src\src\java\org\ 
<br>
<br>
<br>
謝謝你 ^^]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/738.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/738.page</link>
				<pubDate><![CDATA[Thu, 14 Jan 2010 17:25:33]]> GMT</pubDate>
				<author><![CDATA[ A-man]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=victer0327]請問板大，檔案上傳時的說明(filedesc)輸入中文會出現亂碼，這該如何解決呢??[/quote] 
<br>
試著自己找答案看看，一般通常就是編碼的問題，可以查查看API中有沒有和原來使用的method同樣名稱，但多了一個encoding之類的參數的method。 
<br>
API的網址如下： 
<br>
http://commons.apache.org/fileupload/apidocs/index.html 
<br>
<br>
在Streams類別中有個asString 的method，描述如下： 
<br>
static java.lang.String asString(java.io.InputStream pStream, java.lang.String pEncoding) 
<br>
 This convenience method allows to read a FileItemStream's content into a string, using the given character encoding. 
<br>
<br>
試著把原來的程式中的 
<br>
[code]String value = Streams.asString(stream); [/code] 
<br>
改為 
<br>
[code]String encoding = "UTF-8"; 
<br>
String value = Streams.asString(stream, encoding); [/code] 
<br>
看看，如果不行再依序調整encoding的值為"Big5", "MS950", "ISO-8859-1", ... 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/739.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/739.page</link>
				<pubDate><![CDATA[Thu, 14 Jan 2010 18:17:18]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=A-man] 
<br>
在網上找了一下, 找不到明確的方法, 
<br>
所以想問問 安裝函式庫 該怎安裝 ? 
<br>
<br>
我正使用eclipse + tomcat 4.1 
<br>
<br>
在Apache Commons的網站我下載了 
<br>
commons-io-1.4-src.zip &amp; commons-fileupload-1.2.1-src.zip 
<br>
<br>
解壓後 發現內有很多不同的檔案, 
<br>
<br>
我是應該把以下兩個目錄個的檔案, 全部複製到我eclipse 的Project 內 ? 
<br>
commons-fileupload-1.2.1-src\src\java\org 
<br>
和 
<br>
commons-io-1.4-src\src\java\org\ 
<br>
<br>
<br>
謝謝你 ^^[/quote] 
<br>
A-man您應該只需要放jar檔到lib目錄下就好，去下載binary的版本吧！]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/740.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/740.page</link>
				<pubDate><![CDATA[Thu, 14 Jan 2010 18:28:34]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 嘗試把jar檔加入IDE 和 直接將 java source放進去 , 
<br>
上傳能正確運作, 不過在兩個class發現錯誤 
<br>
<br>
如下圖, class 內有數個相同的Error 
<br>
<br>
我使用的是 j2sdk-1_4_2_17 &amp; apache-tomcat-4.1.40 
<br>
<br>
會不會是因為java 的version問題 ?]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/750.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/750.page</link>
				<pubDate><![CDATA[Mon, 18 Jan 2010 10:33:47]]> GMT</pubDate>
				<author><![CDATA[ A-man]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ A-man您好： 
<br>
您可以參考這個網址下載相依性的jar檔 
<br>
http://commons.apache.org/fileupload/dependencies.html]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/751.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/751.page</link>
				<pubDate><![CDATA[Mon, 18 Jan 2010 13:19:01]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ To andowson: 
<br>
<br>
感謝你的幫忙, 問題解決了, 謝謝]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/752.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/752.page</link>
				<pubDate><![CDATA[Tue, 19 Jan 2010 15:45:25]]> GMT</pubDate>
				<author><![CDATA[ A-man]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ org.apache.jasper.JasperException: Exception in JSP: /fileupload.jsp:74 
<br>
<br>
71: fileName= FilenameUtils.getName(fileName); 
<br>
72: out.println("fileName saved="+fileName+"&lt;br&gt;"); 
<br>
73: File uploadedFile = new File(saveDirectory, fileName); 
<br>
74: item.write(uploadedFile); 
<br>
75: } 
<br>
76: } 
<br>
77: } 
<br>
<br>
為什麼會有錯誤??]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/780.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/780.page</link>
				<pubDate><![CDATA[Sun, 7 Mar 2010 20:20:03]]> GMT</pubDate>
				<author><![CDATA[ lionsgogo]]></author>
			</item>
			<item>
				<title>JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問如果將檔案上傳後 
<br>
<br>
如何查詢&lt;將檔案名稱顯示出來&gt; 
<br>
<br>
還有怎麼寫一個網頁 
<br>
<br>
將查詢到想要的檔案下載下來 
<br>
<br>
謝謝你 
<br>
<br>
幫這我很大]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/781.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/781.page</link>
				<pubDate><![CDATA[Sun, 7 Mar 2010 20:45:09]]> GMT</pubDate>
				<author><![CDATA[ lionsgogo]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=lionsgogo]org.apache.jasper.JasperException: Exception in JSP: /fileupload.jsp:74 
<br>
<br>
71: fileName= FilenameUtils.getName(fileName); 
<br>
72: out.println("fileName saved="+fileName+"&lt;br&gt;"); 
<br>
73: File uploadedFile = new File(saveDirectory, fileName); 
<br>
74: item.write(uploadedFile); 
<br>
75: } 
<br>
76: } 
<br>
77: } 
<br>
<br>
為什麼會有錯誤??[/quote] 
<br>
lionsgogo您好: 
<br>
請您檢查一下在您網頁的根目錄下有沒有/upload這個目錄？ 
<br>
如果沒有的話跑出來的錯誤訊息應該會類似這樣子 
<br>
[quote]HTTP Status 500 - 
<br>
<br>
-------------------------------------------------------------------------------- 
<br>
<br>
type Exception report 
<br>
<br>
message 
<br>
<br>
description The server encountered an internal error () that prevented it from fulfilling this request. 
<br>
<br>
exception 
<br>
<br>
org.apache.jasper.JasperException: An exception occurred processing JSP page /fileupload.jsp at line 74 
<br>
<br>
71: fileName= FilenameUtils.getName(fileName); 
<br>
72: out.println("fileName saved="+fileName+"&lt;br&gt;"); 
<br>
73: File uploadedFile = new File(saveDirectory, fileName); 
<br>
74: item.write(uploadedFile); 
<br>
75: } 
<br>
76: } 
<br>
77: } 
<br>
<br>
<br>
Stacktrace: 
<br>
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:404) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
<br>
<br>
<br>
root cause 
<br>
<br>
java.io.FileNotFoundException: D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\examples\upload\2009蓮藕粉訂單.txt (系統找不到指定的路徑。) 
<br>
 java.io.FileOutputStream.open(Native Method) 
<br>
 java.io.FileOutputStream.&lt;init&gt;(Unknown Source) 
<br>
 java.io.FileOutputStream.&lt;init&gt;(Unknown Source) 
<br>
 org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:416) 
<br>
 org.apache.jsp.fileupload_jsp._jspService(fileupload_jsp.java:133) 
<br>
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
<br>
<br>
<br>
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs. 
<br>
<br>
<br>
-------------------------------------------------------------------------------- 
<br>
<br>
Apache Tomcat/6.0.20[/quote] 
<br>
<br>
請手動建立它，如果是在Linux上請設定為可寫入的權限(chmod 777 upload)。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/782.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/782.page</link>
				<pubDate><![CDATA[Mon, 8 Mar 2010 13:18:11]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 您好 
<br>
 想請問一下,我用fileupload_control.jsp這個範例程式傳上去的檔案的檔名會變成亂碼 
<br>
 有人知道這是哪裡有問題嗎 
<br>
<br>
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/844.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/844.page</link>
				<pubDate><![CDATA[Mon, 7 Jun 2010 00:31:17]]> GMT</pubDate>
				<author><![CDATA[ mylipton]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ mylipton您好: 
<br>
請問您是在什麼系統環境下執行所產生的問題? 請您提供更多資訊以便大家可以較快得幫忙您。例如 
<br>
OS版本： 
<br>
Servlet Container版本： 
<br>
JDK版本： 
<br>
上傳前檔案名稱： 
<br>
上傳後檔案名稱： 
<br>
參考資料：附上錯誤畫面及有錯誤的程式原始碼。 
<br>
另外也請您參考本篇文章先前的討論內容尋找解答。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/846.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/846.page</link>
				<pubDate><![CDATA[Mon, 7 Jun 2010 14:33:56]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ andowson謝謝 
<br>
我解決了上傳檔名的問題 
<br>
雖然也不清楚怎麼改好的 
<br>
就是把big5 UTF-8 那些亂試 
<br>
終於試到可以]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/850.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/850.page</link>
				<pubDate><![CDATA[Tue, 8 Jun 2010 15:10:17]]> GMT</pubDate>
				<author><![CDATA[ mylipton]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ andowsonsup您好: 
<br>
我用了fileupload_streaming.html後，檔案並沒上傳，瀏覽器直接顯示成: 
<br>
------------------------------ 
<br>
isMultipart=true 
<br>
fieldName=file 
<br>
fileName=1.jpg 
<br>
contentType=image/jpeg 
<br>
isInMemory=true 
<br>
sizeInBytes=782266 
<br>
fileName to be saved=1.jpg 
<br>
filedesc= 
<br>
---------------------------------- 
<br>
不知問題要如何解決?? 
<br>
但我在TOMCAT上是OK的. 
<br>
OS版本：windows 
<br>
Servlet Container版本： glassfish 
<br>
JDK版本： jdk1.6.0_21 
<br>
上傳前檔案名稱： 1.jpg 
<br>
上傳後檔案名稱： 1.jpg 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/898.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/898.page</link>
				<pubDate><![CDATA[Wed, 15 Sep 2010 11:34:04]]> GMT</pubDate>
				<author><![CDATA[ shyk]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ shyk您好： 
<br>
我下載的是本主題的第二篇文章的附檔fileupload_streaming.html及fileupload_streaming.jsp，然後安裝GlassFish Server Open Source Edition 3.0.1(安裝在C:\glassfishv3)，經過實際測試顯示的畫面如下： 
<br>
------------------------------ 
<br>
isMultipart=true 
<br>
fieldName=file 
<br>
fileName=1.jpg 
<br>
contentType=image/jpeg 
<br>
fileName saved=1.jpg 
<br>
filedesc= 
<br>
------------------------------ 
<br>
檔案有出現在upload資料夾下，實際的路徑是： 
<br>
C:\glassfishv3\glassfish\domains\domain1\applications\example\upload 
<br>
所以，在GlassFish應該也是沒問題的。（其實，過程中有遇到一個小狀況就是，我用Eclipse把所有的檔案包成一個example.war，原本的example.war裡面明明有放一個upload的空目錄，但是佈署後，該目錄卻消失了，造成上傳失敗，手動建立後，再上傳就成功了） 
<br>
<br>
比對你的輸出畫面文字跟我的不太相同，不知道您下載的是哪一篇文章的附檔？您可以檢查一下GlassFish的logs目錄下面的server.log，看看錯誤訊息為何，應該就可以知道問題在哪邊了。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/899.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/899.page</link>
				<pubDate><![CDATA[Thu, 16 Sep 2010 21:56:09]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問版大我下載第二個程式，但在上傳時如果檔名是中文會產生??的亂碼，檔案除了檔名外皆正常上傳。 
<br>
也試過用不同的檔名編碼來儲存，但是都無法成功儲存中文檔名。 
<br>
<br>
OS: solaris10 
<br>
Web Server: Sun GlassFish Enterprise Server v2.1.1 
<br>
<br>
感謝]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/951.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/951.page</link>
				<pubDate><![CDATA[Thu, 6 Jan 2011 17:43:47]]> GMT</pubDate>
				<author><![CDATA[ aauggogogo]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ aauggogogo您好: 
<br>
我想您是由Windows環境將中文檔名的檔案上傳到Solaris的檔案系統，然後看到上傳的檔名變成??的樣子吧？ 
<br>
<br>
由於我目前手邊沒有Solaris 10的環境，所以我改用Linux環境的經驗來說明，供您參考： 
<br>
<br>
首先，參考這篇文章[url=http://www.herongyang.com/Java/System-JVM-and-OS-System-Properties.html]JVM and OS System Properties[/url]，將下列的程式碼編譯成SysProperties.class 
<br>
<br>
SysProperties.java: 
<br>
[code] 
<br>
import java.util.Properties; 
<br>
<br>
public class SysProperties { 
<br>
 public static void main(String[] args) { 
<br>
 Properties sysProps = System.getProperties(); 
<br>
 sysProps.list(System.out); 
<br>
 } 
<br>
}[/code] 
<br>
<br>
然後執行 
<br>
[code]java SysProperties[/code] 
<br>
<br>
可以得到類似下面的輸出 
<br>
 :arrow: Windows: 
<br>
-- listing properties -- 
<br>
java.runtime.name=Java(TM) SE Runtime Environment 
<br>
sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_23\jre... 
<br>
java.vm.version=19.0-b09 
<br>
java.vm.vendor=Sun Microsystems Inc. 
<br>
java.vendor.url=http://java.sun.com/ 
<br>
path.separator=; 
<br>
java.vm.name=Java HotSpot(TM) Client VM 
<br>
file.encoding.pkg=sun.io 
<br>
user.country=TW 
<br>
sun.java.launcher=SUN_STANDARD 
<br>
sun.os.patch.level=Service Pack 3 
<br>
java.vm.specification.name=Java Virtual Machine Specification 
<br>
user.dir=D:\workspace\test 
<br>
java.runtime.version=1.6.0_23-b05 
<br>
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment 
<br>
java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_23\jre... 
<br>
os.arch=x86 
<br>
java.io.tmpdir=C:\DOCUME~1\user\LOCALS~1\Temp\ 
<br>
line.separator= 
<br>
<br>
java.vm.specification.vendor=Sun Microsystems Inc. 
<br>
user.variant= 
<br>
os.name=Windows XP 
<br>
sun.jnu.encoding=MS950 
<br>
java.library.path=C:\Program Files\Java\jdk1.6.0_23\bin... 
<br>
java.specification.name=Java Platform API Specification 
<br>
java.class.version=50.0 
<br>
sun.management.compiler=HotSpot Client Compiler 
<br>
os.version=5.1 
<br>
user.home=C:\Documents and Settings\user 
<br>
user.timezone= 
<br>
java.awt.printerjob=sun.awt.windows.WPrinterJob 
<br>
[color=red]file.encoding=MS950[/color] 
<br>
java.specification.version=1.6 
<br>
user.name=andowson 
<br>
java.class.path=D:\workspace\test\bin 
<br>
java.vm.specification.version=1.0 
<br>
sun.arch.data.model=32 
<br>
java.home=C:\Program Files\Java\jdk1.6.0_23\jre 
<br>
java.specification.vendor=Sun Microsystems Inc. 
<br>
user.language=zh 
<br>
awt.toolkit=sun.awt.windows.WToolkit 
<br>
java.vm.info=mixed mode, sharing 
<br>
java.version=1.6.0_23 
<br>
java.ext.dirs=C:\Program Files\Java\jdk1.6.0_23\jre... 
<br>
sun.boot.class.path=C:\Program Files\Java\jdk1.6.0_23\jre... 
<br>
java.vendor=Sun Microsystems Inc. 
<br>
file.separator=\ 
<br>
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport... 
<br>
sun.cpu.endian=little 
<br>
sun.io.unicode.encoding=UnicodeLittle 
<br>
sun.desktop=windows 
<br>
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m... 
<br>
<br>
 :arrow: Linux: 
<br>
[andowson@scm ~]$ java SysProperties 
<br>
-- listing properties -- 
<br>
java.runtime.name=Java(TM) SE Runtime Environment 
<br>
sun.boot.library.path=/usr/java/jdk1.6.0_23/jre/lib/i386 
<br>
java.vm.version=19.0-b09 
<br>
java.vm.vendor=Sun Microsystems Inc. 
<br>
java.vendor.url=http://java.sun.com/ 
<br>
path.separator=: 
<br>
java.vm.name=Java HotSpot(TM) Server VM 
<br>
file.encoding.pkg=sun.io 
<br>
user.country=TW 
<br>
sun.java.launcher=SUN_STANDARD 
<br>
sun.os.patch.level=unknown 
<br>
java.vm.specification.name=Java Virtual Machine Specification 
<br>
user.dir=/home/andowson 
<br>
java.runtime.version=1.6.0_23-b05 
<br>
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment 
<br>
java.endorsed.dirs=/usr/java/jdk1.6.0_23/jre/lib/endorsed 
<br>
os.arch=i386 
<br>
java.io.tmpdir=/tmp 
<br>
line.separator= 
<br>
<br>
java.vm.specification.vendor=Sun Microsystems Inc. 
<br>
os.name=Linux 
<br>
sun.jnu.encoding=UTF-8 
<br>
java.library.path=/usr/java/jdk1.6.0_23/jre/lib/i386/se... 
<br>
java.specification.name=Java Platform API Specification 
<br>
java.class.version=50.0 
<br>
sun.management.compiler=HotSpot Tiered Compilers 
<br>
os.version=2.6.18-194.11.1.el5 
<br>
user.home=/home/andowson 
<br>
user.timezone= 
<br>
java.awt.printerjob=sun.print.PSPrinterJob 
<br>
[color=red]file.encoding=UTF-8[/color] 
<br>
java.specification.version=1.6 
<br>
user.name=andowson 
<br>
java.class.path=. 
<br>
java.vm.specification.version=1.0 
<br>
sun.arch.data.model=32 
<br>
java.home=/usr/java/jdk1.6.0_23/jre 
<br>
java.specification.vendor=Sun Microsystems Inc. 
<br>
user.language=zh 
<br>
java.vm.info=mixed mode 
<br>
java.version=1.6.0_23 
<br>
java.ext.dirs=/usr/java/jdk1.6.0_23/jre/lib/ext:/us... 
<br>
sun.boot.class.path=/usr/java/jdk1.6.0_23/jre/lib/resourc... 
<br>
java.vendor=Sun Microsystems Inc. 
<br>
file.separator=/ 
<br>
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport... 
<br>
sun.cpu.endian=little 
<br>
sun.io.unicode.en 
<br>
<br>
然後觀察file.encoding這個系統屬性的值，可以發現在Windows上是MS950，在Linux上是UTF-8，也就是說JVM預設的編碼將會採用MS950和UTF-8來處理檔案的I/O。故通常都會出現一些錯誤訊息，例如File Not Found或寫檔時，檔名看到一堆??和亂碼。 
<br>
<br>
解決的方法： 
<br>
目前我是將Linux的預設編碼改為Big5，修改/etc/sysconfig/i18n（ :!: 需要重開機reboot OS）: 
<br>
[code]LANG="zh_TW.Big5"[/code] 
<br>
另外一種方式（沒試過請自行確認）是啟動JVM時加上-Dfile.encoding=MS950或-Dfile.encoding=Big5 
<br>
<br>
參考資料： 
<br>
http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/954.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/954.page</link>
				<pubDate><![CDATA[Mon, 10 Jan 2011 10:22:06]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 目前server字集為ISO646-US，由於某些原因，無法允許改變字集。 
<br>
因為沒轍了，所以目前想改其他方式(資料庫存中文檔名)解決。 
<br>
感謝andowson大大的回覆。 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/955.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/955.page</link>
				<pubDate><![CDATA[Mon, 10 Jan 2011 17:14:11]]> GMT</pubDate>
				<author><![CDATA[ aauggogogo]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 可以請問一下可以把上傳路徑不要設在tomcat底下嗎? 
<br>
可以自己設定檔案路徑嗎? 
<br>
例如c:\upload 
<br>
謝謝!!]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/956.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/956.page</link>
				<pubDate><![CDATA[Wed, 12 Jan 2011 15:16:02]]> GMT</pubDate>
				<author><![CDATA[ kisskevin524]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 中文檔名上傳後變成亂碼或??的問題可以透過指定來源表單的編碼方式修正，另外上傳目錄也可以修改到Tomcat以外的目錄，例如C:\upload下（目錄不存在時也可以自動建立） 
<br>
首先將來源表單的charset設為UTF-8 
<br>
fileupload_streaming.html: 
<br>
[code]&lt;html&gt; 
<br>
&lt;head&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
<p><font size="5" color="#ff0000"><b>檔案上傳</b></font></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload_streaming.jsp"&gt; 
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20"&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50"&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳"&gt; &lt;input type="reset" value="清除"&gt;</p>
<br>
&lt;/form&gt; 
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt;[/code] 
<br>
處理上傳的程式加上request.setCharacterEncoding(encoding); 
<br>
fileupload_streaming.jsp: 
<br>
[code]&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.util.Streams"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;% 
<br>
 //String saveDirectory = application.getRealPath("/upload"); 
<br>
 // Change save direcoty to another place outside of Tomcat 
<br>
 String saveDirectory = "C:/upload"; 
<br>
 File dir = new File(saveDirectory); 
<br>
 if (!dir.exists()) { 
<br>
 boolean success = dir.mkdir(); 
<br>
 if (success) { 
<br>
 System.out.println("Directory: " + saveDirectory + " created"); 
<br>
 } 
<br>
 } 
<br>
<br>
 out.println("file.encoding=" + System.getProperty("file.encoding") + "&lt;br&gt;"); 
<br>
<br>
 // Solve Chinese filename problem: use original form encoding 
<br>
 String encoding = "UTF-8"; 
<br>
 request.setCharacterEncoding(encoding); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart=" + isMultipart + "&lt;br&gt;"); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener(){ 
<br>
 private long megaBytes = -1; 
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength 
<br>
 + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 // Parse the request 
<br>
 FileItemIterator iter = upload.getItemIterator(request); 
<br>
 while (iter.hasNext()) { 
<br>
 FileItemStream item = iter.next(); 
<br>
 String name = item.getFieldName(); 
<br>
 InputStream stream = item.openStream(); 
<br>
 if (item.isFormField()) { 
<br>
 String value = Streams.asString(stream, encoding); 
<br>
 out.println(name + "=" + value + "&lt;br&gt;"); 
<br>
 } else { 
<br>
 System.out.println("File field " + name + " with file name " 
<br>
 + item.getName() + " detected."); 
<br>
 // Process the input stream 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 out.println("fieldName=" + fieldName + "&lt;br&gt;"); 
<br>
 out.println("fileName=" + fileName + "&lt;br&gt;"); 
<br>
 out.println("contentType=" + contentType + "&lt;br&gt;"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 fileName = FilenameUtils.getName(fileName); 
<br>
 out.println("fileName saved=" + fileName + "&lt;br&gt;"); 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 FileOutputStream uploadedFileStream = 
<br>
 new FileOutputStream(uploadedFile); 
<br>
 Streams.copy(stream, uploadedFileStream, true); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
%&gt; 
<br>
[/code]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/957.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/957.page</link>
				<pubDate><![CDATA[Fri, 14 Jan 2011 01:40:27]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問一下 
<br>
大大有做過上傳過上百mb的檔案嗎 
<br>
上傳大檔似乎會timeout 
<br>
謝謝!!]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1197.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1197.page</link>
				<pubDate><![CDATA[Fri, 13 Jan 2012 16:14:39]]> GMT</pubDate>
				<author><![CDATA[ kisskevin524]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 實際測試上傳一個1GB多的檔案，確實會出現Read timed out的結果: 
<br>
[code=plain]So far, 1069001476 of 1073742116 bytes have been read. 
<br>
We are currently reading item 1 
<br>
So far, 1070000168 of 1073742116 bytes have been read. 
<br>
We are currently reading item 1 
<br>
So far, 1071002992 of 1073742116 bytes have been read. 
<br>
We are currently reading item 1 
<br>
So far, 1072001684 of 1073742116 bytes have been read. 
<br>
We are currently reading item 1 
<br>
So far, 1073000376 of 1073742116 bytes have been read. 
<br>
一月 16, 2012 2:25:28 上午 org.apache.catalina.core.StandardWrapperValve invoke 
<br>
嚴重: Servlet.service() for servlet [jsp] in context with path [] threw exception [An exception occurred processing JSP page /fileupload_streaming.jsp at line 65 
<br>
<br>
62: File uploadedFile = new File(saveDirectory, fileName); 
<br>
63: FileOutputStream uploadedFileStream = 
<br>
64: new FileOutputStream(uploadedFile); 
<br>
65: Streams.copy(stream, uploadedFileStream, true); 
<br>
66: } 
<br>
67: } 
<br>
68: } 
<br>
<br>
<br>
Stacktrace:] with root cause 
<br>
java.net.SocketTimeoutException: Read timed out 
<br>
 at java.net.SocketInputStream.socketRead0(Native Method) 
<br>
 at java.net.SocketInputStream.read(Unknown Source) 
<br>
 at java.net.SocketInputStream.read(Unknown Source) 
<br>
 at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309) 
<br>
 at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364) 
<br>
 at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331) 
<br>
 at org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576) 
<br>
 at org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027) 
<br>
 at org.apache.coyote.Request.doRead(Request.java:422) 
<br>
 at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290) 
<br>
 at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429) 
<br>
 at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315) 
<br>
 at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200) 
<br>
 at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976) 
<br>
 at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886) 
<br>
 at java.io.InputStream.read(Unknown Source) 
<br>
 at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96) 
<br>
 at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66) 
<br>
 at org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125) 
<br>
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
<br>
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
<br>
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
<br>
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
<br>
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
<br>
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
<br>
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
<br>
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
<br>
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
<br>
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
<br>
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
<br>
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
<br>
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
<br>
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) 
<br>
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
<br>
 at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333) 
<br>
 at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219) 
<br>
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
<br>
 at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) 
<br>
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) 
<br>
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) 
<br>
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
<br>
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
<br>
 at java.lang.Thread.run(Unknown Source)[/code] 
<br>
[quote]HTTP Status 500 - 
<br>
<br>
type Exception report 
<br>
<br>
message 
<br>
<br>
description The server encountered an internal error () that prevented it from fulfilling this request. 
<br>
<br>
exception 
<br>
<br>
org.apache.jasper.JasperException: An exception occurred processing JSP page /fileupload_streaming.jsp at line 65 
<br>
<br>
62: File uploadedFile = new File(saveDirectory, fileName); 
<br>
63: FileOutputStream uploadedFileStream = 
<br>
64: new FileOutputStream(uploadedFile); 
<br>
65: Streams.copy(stream, uploadedFileStream, true); 
<br>
66: } 
<br>
67: } 
<br>
68: } 
<br>
<br>
<br>
Stacktrace: 
<br>
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
<br>
root cause 
<br>
<br>
java.net.SocketTimeoutException: Read timed out 
<br>
 java.net.SocketInputStream.socketRead0(Native Method) 
<br>
 java.net.SocketInputStream.read(Unknown Source) 
<br>
 java.net.SocketInputStream.read(Unknown Source) 
<br>
 org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309) 
<br>
 org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364) 
<br>
 org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331) 
<br>
 org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576) 
<br>
 org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027) 
<br>
 org.apache.coyote.Request.doRead(Request.java:422) 
<br>
 org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290) 
<br>
 org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429) 
<br>
 org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315) 
<br>
 org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200) 
<br>
 org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976) 
<br>
 org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886) 
<br>
 java.io.InputStream.read(Unknown Source) 
<br>
 org.apache.commons.fileupload.util.Streams.copy(Streams.java:96) 
<br>
 org.apache.commons.fileupload.util.Streams.copy(Streams.java:66) 
<br>
 org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125) 
<br>
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
<br>
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs. 
<br>
<br>
Apache Tomcat/7.0.23[/quote] 
<br>
實際上傳的檔案大小如下: 
<br>
[code=plain]-rw-r--r-- 1 tomcat tomcat 1073094361 2012-01-16 02:25 ppsds.pgf[/code] 
<br>
目前我的web.xml中設定如下: 
<br>
[code=xml] &lt;session-config&gt; 
<br>
 &lt;session-timeout&gt;10&lt;/session-timeout&gt; 
<br>
 &lt;/session-config&gt;[/code] 
<br>
目前我不確定是否跟session-timeout這個值有關係(10分鐘)，不過整個1GB檔案上傳的時間大約有花半小時以上，您可以試試看調整這個參數再測試看看。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1198.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1198.page</link>
				<pubDate><![CDATA[Mon, 16 Jan 2012 02:36:43]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=andowson]中文檔名上傳後變成亂碼或??的問題可以透過指定來源表單的編碼方式修正，另外上傳目錄也可以修改到Tomcat以外的目錄，例如C:\upload下（目錄不存在時也可以自動建立） 
<br>
首先將來源表單的charset設為UTF-8 
<br>
fileupload_streaming.html: 
<br>
%&gt; 
<br>
[/code][/quote] 
<br>
<br>
大大 我想請問一下 現在上傳檔案的姓名 根據檔案原本的名稱，也就是說 相同的名稱，會覆蓋同一個名稱，可以變成自己輸入檔案名稱嗎? 
<br>
<br>
檔案說明的部分 有什麼作用嗎? 
<br>
<br>
上傳之後的訊息 (是哪一段程式碼作用) 想再增加一個按鍵 返回 原頁面]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1240.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1240.page</link>
				<pubDate><![CDATA[Tue, 7 Aug 2012 16:09:16]]> GMT</pubDate>
				<author><![CDATA[ 羽小橘]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 如果要讓上傳後的檔案名稱可以另外指定的話，我們需要加上一個新的欄位filename在表單的最前面(因為是系統是依序處理的) 
<br>
fileupload_streaming.html: 
<br>
[code=html] 
<br>
&lt;html&gt; 
<br>
&lt;head&gt; 
<br>
&lt;title&gt;File Upload&lt;/title&gt; 
<br>
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt; 
<br>
&lt;/head&gt; 
<br>
&lt;body&gt; 
<br>
<p><font size="5" color="#ff0000"><b>檔案上傳</b></font></p>
<br>
<br>
&lt;form name="upload" enctype="multipart/form-data" method="post" action="fileupload_streaming.jsp"&gt; 
<br>
<p>存檔名稱： &lt;input type="text" name="filename" size="50" maxlength="255"&gt;</p>
<br>
<p>上傳檔案： &lt;input type="file" name="file" size="20" maxlength="20"&gt;</p>
<br>
<p>檔案說明： &lt;input type="text" name="filedesc" size="30" maxlength="50"&gt;</p>
<br>
<p>&lt;input type="submit"value="上傳"&gt; &lt;input type="reset" value="清除"&gt;</p>
<br>
&lt;/form&gt; 
<br>
存檔名稱：伺服器上儲存之檔案名稱(空白表示與上傳檔案名稱相同)
<br>
<br>
檔案說明：請描述該檔案的內容
<br>
<br>
&lt;/body&gt; 
<br>
&lt;/html&gt; 
<br>
[/code] 
<br>
在處理表單資料時，我們需要另外宣告一個filenameSaved字串變數放在while迴圈外面，初始值設為null，等到while迴圈內部讀取到filename這個欄位名稱時將value的值設定給它。 
<br>
接下來處理到file型態的表單資料時，再比對上傳的檔案名稱和我們的存檔名稱是否相同，若有設定新的存檔名稱時，將fileName變數的值改為我們設定的filenameSaved。下面就照原來的邏輯去處理即可。 
<br>
<br>
fileupload_streaming.jsp: 
<br>
[code] 
<br>
&lt;%@ page contentType="text/html; charset=UTF-8"%&gt; 
<br>
&lt;%@ page import="java.io.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.*"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.fileupload.util.Streams"%&gt; 
<br>
&lt;%@ page import="org.apache.commons.io.FilenameUtils"%&gt; 
<br>
&lt;% 
<br>
 String saveDirectory = application.getRealPath("/upload"); 
<br>
 // Change save direcoty to another place outside of Tomcat 
<br>
 //String saveDirectory = "C:/upload"; 
<br>
 File dir = new File(saveDirectory); 
<br>
 if (!dir.exists()) { 
<br>
 boolean success = dir.mkdir(); 
<br>
 if (success) { 
<br>
 System.out.println("Directory: " + saveDirectory + " created"); 
<br>
 } 
<br>
 } 
<br>
<br>
 out.println("file.encoding=" + System.getProperty("file.encoding") + "&lt;br&gt;"); 
<br>
<br>
 // Solve Chinese filename problem: use original form encoding 
<br>
 String encoding = "UTF-8"; 
<br>
 request.setCharacterEncoding(encoding); 
<br>
<br>
 // Check that we have a file upload request 
<br>
 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
<br>
 out.println("isMultipart=" + isMultipart + "&lt;br&gt;"); 
<br>
<br>
 // Create a new file upload handler 
<br>
 ServletFileUpload upload = new ServletFileUpload(); 
<br>
<br>
 //Create a progress listener 
<br>
 ProgressListener progressListener = new ProgressListener(){ 
<br>
 private long megaBytes = -1; 
<br>
 public void update(long pBytesRead, long pContentLength, int pItems) { 
<br>
 long mBytes = pBytesRead / 1000000; 
<br>
 if (megaBytes == mBytes) { 
<br>
 return; 
<br>
 } 
<br>
 megaBytes = mBytes; 
<br>
 System.out.println("We are currently reading item " + pItems); 
<br>
 if (pContentLength == -1) { 
<br>
 System.out.println("So far, " + pBytesRead + " bytes have been read."); 
<br>
 } else { 
<br>
 System.out.println("So far, " + pBytesRead + " of " + pContentLength 
<br>
 + " bytes have been read."); 
<br>
 } 
<br>
 } 
<br>
 }; 
<br>
 upload.setProgressListener(progressListener); 
<br>
<br>
 // Parse the request 
<br>
 FileItemIterator iter = upload.getItemIterator(request); 
<br>
 String filenameSaved = null; 
<br>
 while (iter.hasNext()) { 
<br>
 FileItemStream item = iter.next(); 
<br>
 String name = item.getFieldName(); 
<br>
 InputStream stream = item.openStream(); 
<br>
 if (item.isFormField()) { 
<br>
 String value = Streams.asString(stream, encoding); 
<br>
 out.println(name + "=" + value + "&lt;br&gt;"); 
<br>
 if ("filename".equals(name)) { 
<br>
 filenameSaved = value; 
<br>
 System.out.println(name + "=" + value); 
<br>
 } 
<br>
 } else { 
<br>
 System.out.println("File field " + name + " with file name " 
<br>
 + item.getName() + " detected."); 
<br>
 // Process the input stream 
<br>
 String fieldName = item.getFieldName(); 
<br>
 String fileName = item.getName(); 
<br>
 String contentType = item.getContentType(); 
<br>
 out.println("fieldName=" + fieldName + "&lt;br&gt;"); 
<br>
 out.println("fileName=" + fileName + "&lt;br&gt;"); 
<br>
 out.println("contentType=" + contentType + "&lt;br&gt;"); 
<br>
 if (fileName != null &amp;&amp; !"".equals(fileName)) { 
<br>
 fileName = FilenameUtils.getName(fileName); 
<br>
 if (filenameSaved != null &amp;&amp; !"".equals(filenameSaved) &amp;&amp; !filenameSaved.equals(fileName)) { 
<br>
 fileName = filenameSaved; 
<br>
 } 
<br>
 out.println("fileName saved=" + fileName + "&lt;br&gt;"); 
<br>
 File uploadedFile = new File(saveDirectory, fileName); 
<br>
 FileOutputStream uploadedFileStream = 
<br>
 new FileOutputStream(uploadedFile); 
<br>
 Streams.copy(stream, uploadedFileStream, true); 
<br>
 } 
<br>
 } 
<br>
 } 
<br>
%&gt; 
<br>
&lt;input type="button" name="prev" value="Go back to previous page" onclick="history.go(-1);"/&gt; 
<br>
[/code] 
<br>
檔案說明這欄是當您想要將這些表單資料儲存到資料庫時才有用。 
<br>
<br>
回上頁的按鈕可以加在最底下: 
<br>
[code=html]&lt;input type="button" name="prev" value="Go back to previous page" onclick="history.go(-1);"/&gt;[/code]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1242.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1242.page</link>
				<pubDate><![CDATA[Sat, 11 Aug 2012 00:07:41]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問大大: 
<br>
<br>
可以夾帶資料過去嗎 
<br>
<br>
就是我要在第1頁session 
<br>
<br>
可是下一頁就是抓不到 
<br>
<br>
該如何解決]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1243.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1243.page</link>
				<pubDate><![CDATA[Mon, 27 Aug 2012 15:00:52]]> GMT</pubDate>
				<author><![CDATA[ hero9]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ hero9您好: 
<br>
請把您在程式哪裡加上session，然後怎麼取出session指出一下。 
<br>
(請附上您的程式碼方便了解您的問題所在)]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1244.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1244.page</link>
				<pubDate><![CDATA[Mon, 27 Aug 2012 22:08:56]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ andowson大大: 
<br>
<br>
我有試過把 form 裡的 enctype="multipart/form-data" 拿掉 
<br>
<br>
這樣的話我想取的值是取得到的，但這樣就無法上傳了(只是測試) 
<br>
<br>
1.也有試過讓 form 裡的 action 到本頁，最後再用 javascript 到下一頁去 
<br>
<br>
2.最後想說讓值先到 hidden 裡，然後下一頁再用 request.getParameter 去接 
<br>
<br>
兩者都行不通 
<br>
<br>
下一頁我有打 
<br>
<br>
String sd = (String)session.getAttribute("sd"); 
<br>
out.println(sd); 
<br>
<br>
sd顯示是null]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1245.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1245.page</link>
				<pubDate><![CDATA[Tue, 28 Aug 2012 11:35:17]]> GMT</pubDate>
				<author><![CDATA[ hero9]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ hero9您好: 
<br>
可否請您說清楚您的網頁流程，例如 
<br>
text.jsp-&gt;fileupload.jsp-&gt;next.jsp 
<br>
text.jsp會傳兩個參數file1(file型態), sd(select型態)給fileupload.jsp 
<br>
在fileupload.jsp會取出file1及sd的值, 並將sd的值設定到session變數sd去。 
<br>
然後由next.jsp再取出session變數sd的值? 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1246.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1246.page</link>
				<pubDate><![CDATA[Tue, 28 Aug 2012 22:43:56]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 你好 
<br>
<br>
請問我現在要傳到別人的server 
<br>
<br>
我下載您的範例檔已經上傳到他主機的ftp內 
<br>
<br>
然後用他的主機開上傳網頁 按下上傳之後出現 
<br>
<br>
org.apache.jasper.JasperException: An exception occurred processing JSP page /stu/csie101/14994046/testjsp/fileupload.jsp at line 74 
<br>
<br>
java.io.FileNotFoundException: D:\AppServ\Tomcat 6.0\webapps\ROOT\images\05_45_3_web.jpg (系統找不到指定的路徑。) 
<br>
<br>
他找不到路徑 可是我上傳到FTP資料夾的裡面有建upload資料夾 
<br>
<br>
<br>
---------FTP資料夾 
<br>
upload-&gt;資料夾 
<br>
fileupload.jsp 
<br>
fileupload.html 
<br>
<br>
--------- 
<br>
<br>
這樣怎麼解決呢 
<br>
<br>
<br>
<br>
<br>
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1265.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1265.page</link>
				<pubDate><![CDATA[Thu, 3 Jan 2013 15:05:53]]> GMT</pubDate>
				<author><![CDATA[ sweetxuite]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ sweetxuite 你好， 
<br>
<br>
請問這部Server是否為Linux或UNIX-like系統，因為看起來檔案路徑是長這樣 
<br>
/stu/csie101/14994046/testjsp/fileupload.jsp 
<br>
<br>
又就錯誤訊息看起來是指定了一個Windows上面的檔案路徑: 
<br>
D:\AppServ\Tomcat 6.0\webapps\ROOT\images\05_45_3_web.jpg (系統找不到指定的路徑。) 
<br>
<br>
所以可能要請您確認一下fileupload.jsp的內容是否有修改過，另一種是去找出Server上Tomcat自動轉譯產生的中間原始檔fileupload_jsp.java的內容確認一下第74行的內容為何。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1266.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1266.page</link>
				<pubDate><![CDATA[Fri, 4 Jan 2013 22:22:31]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 上傳已經成功了 感謝! 
<br>
<br>
可是，傳到build裡面，圖片抓不出來，請問該怎麼解決???]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1333.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1333.page</link>
				<pubDate><![CDATA[Sun, 20 Sep 2015 17:41:01]]> GMT</pubDate>
				<author><![CDATA[ 初心者]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=初心者]上傳已經成功了 感謝! 
<br>
<br>
可是，傳到build裡面，圖片抓不出來，請問該怎麼解決???[/quote] 
<br>
<br>
&lt;img src="./build/web/images/&lt;%= fileName%&gt;.jpg" width="100px" height="156px"&gt;]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1334.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1334.page</link>
				<pubDate><![CDATA[Sun, 20 Sep 2015 17:56:06]]> GMT</pubDate>
				<author><![CDATA[ 初心者]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 初心者您好: 
<br>
依我初步的了解，您應該是使用NetBeans IDE作為開發環境，build這個目錄傳統上應該是IDE環境自動產生，用來放置編譯後程式的地方，所以不應該將build列入您的路徑上。 
<br>
建議您將檔案上傳到web/images目錄下，然後將圖片的路徑改為下面這樣測試看看: 
<br>
<br>
&lt;img src="/web/images/&lt;%= fileName%&gt;.jpg" width="100px" height="156px"&gt;]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1335.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1335.page</link>
				<pubDate><![CDATA[Mon, 21 Sep 2015 23:10:46]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 你好，已經可以抓得到照片了感謝你~ 
<br>
<br>
但我現在遇到一個問題是 我要把regular form field 寫入到資料庫中 
<br>
<br>
我是這樣子寫的 
<br>
<br>
String fileName = null; 
<br>
 String value = null; 
<br>
 String v2 = null; 
<br>
 String v3 = null; 
<br>
 String v4 = null; 
<br>
 String v5 = null; 
<br>
 String v6 = null; 
<br>
<br>
 while (iter.hasNext()) { 
<br>
 FileItem item = (FileItem) iter.next(); 
<br>
<br>
 if (item.isFormField()) { 
<br>
 // Process a regular form field 
<br>
 //processFormField(item); 
<br>
 String name = item.getFieldName(); 
<br>
 value = item.getString(); 
<br>
 String n2 = item.getFieldName(); 
<br>
 v2 = item.getString(); 
<br>
 String n3 = item.getFieldName(); 
<br>
 v3 = item.getString(); 
<br>
 String n4 = item.getFieldName(); 
<br>
 v4 = item.getString(); 
<br>
 String n5 = item.getFieldName(); 
<br>
 v5 = item.getString(); 
<br>
 String n6 = item.getFieldName(); 
<br>
 v6 = item.getString(); 
<br>
 value = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 v2 = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 v3 = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 v4 = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 v5 = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
 v6 = new String(value.getBytes("UTF-8"), "ISO-8859-1"); 
<br>
<br>
<br>
但是我存入的時候 會是亂碼， 而且中文似乎沒辦法]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1339.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1339.page</link>
				<pubDate><![CDATA[Wed, 7 Oct 2015 04:47:58]]> GMT</pubDate>
				<author><![CDATA[ 初心者]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 初心者您好: 
<br>
您可以參考這篇的#27號回應相關說明 
<br>
http://www.andowson.com/posts/list/15/197.page 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1340.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1340.page</link>
				<pubDate><![CDATA[Sat, 10 Oct 2015 00:34:20]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 版大： 
<br>
我用你提供的範本檔案來執行，但是有些問題!!! 
<br>
我是用Eclipse + JBoos-4.0.5.GA + jdk1.6.0_41 
<br>
<br>
程式中我有多加下列兩行，建立目錄用的 
<br>
File mkupload = new File(saveDirectory); 
<br>
mkupload.mkdir(); 
<br>
<br>
請問一下，我是那個部分沒有注意到的嗎？ 
<br>
<br>
錯誤訊息如下： 
<br>
exception 
<br>
<br>
org.apache.jasper.JasperException: Exception in JSP: /fileupload.jsp:48 
<br>
<br>
45: upload.setProgressListener(progressListener); 
<br>
46: 
<br>
47: // Parse the request 
<br>
48: List items = upload.parseRequest(request); 
<br>
49: 
<br>
50: // Process the uploaded items 
<br>
51: 
<br>
<br>
<br>
Stacktrace: 
<br>
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
<br>
 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
<br>
<br>
<br>
root cause 
<br>
<br>
javax.servlet.ServletException: Bad version number in .class file 
<br>
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843) 
<br>
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776) 
<br>
 org.apache.jsp.fileupload_jsp._jspService(fileupload_jsp.java:140) 
<br>
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
<br>
 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
<br>
<br>
<br>
root cause 
<br>
<br>
java.lang.UnsupportedClassVersionError: Bad version number in .class file 
<br>
 java.lang.ClassLoader.defineClass1(Native Method) 
<br>
 java.lang.ClassLoader.defineClass(Unknown Source) 
<br>
 java.security.SecureClassLoader.defineClass(Unknown Source) 
<br>
 org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) 
<br>
 org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) 
<br>
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) 
<br>
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) 
<br>
 java.lang.ClassLoader.loadClassInternal(Unknown Source) 
<br>
 org.apache.commons.fileupload.util.Streams.copy(Streams.java:123) 
<br>
 org.apache.commons.fileupload.util.Streams.copy(Streams.java:70) 
<br>
 org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:593) 
<br>
 org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:617) 
<br>
 org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:634) 
<br>
 org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1023) 
<br>
 org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.&lt;init&gt;(FileUploadBase.java:1003) 
<br>
 org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310) 
<br>
 org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334) 
<br>
 org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) 
<br>
 org.apache.jsp.fileupload_jsp._jspService(fileupload_jsp.java:96) 
<br>
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
<br>
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) 
<br>
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 
<br>
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 
<br>
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 
<br>
 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
<br>
<br>
<br>
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs. 
<br>
<br>
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1383.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1383.page</link>
				<pubDate><![CDATA[Sat, 27 May 2017 18:00:43]]> GMT</pubDate>
				<author><![CDATA[ dream1978]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ dream1978您好: 
<br>
你的主要問題原因是這一行: 
<br>
[code]java.lang.UnsupportedClassVersionError: Bad version number in .class file[/code] 
<br>
請檢查Eclipse中的Java compiler設定是哪個版本的JDK]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1384.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1384.page</link>
				<pubDate><![CDATA[Fri, 9 Jun 2017 13:03:46]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=andowson]dream1978您好: 
<br>
你的主要問題原因是這一行: 
<br>
[code]java.lang.UnsupportedClassVersionError: Bad version number in .class file[/code] 
<br>
請檢查Eclipse中的Java compiler設定是哪個版本的JDK[/quote] 
<br>
<br>
有1.5、1.6我都試過，都是一樣的結果 
<br>
請問大大是否要新的版本才支援？如果是新版才支援的話，那是否1.5或是1.6有支援的寫法呢？]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1385.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1385.page</link>
				<pubDate><![CDATA[Sat, 10 Jun 2017 11:25:55]]> GMT</pubDate>
				<author><![CDATA[ dream1978]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 這個問題應該還是環境面的問題，跟程式語法無關。 
<br>
主要原因就是使用較高版本的JDK編譯後放到較低版本的JDK或JRE中去執行程式。 
<br>
如果你可以附上Project中Java Compiler及JBoss中使用的JDK版本，就比較方便比較。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1386.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1386.page</link>
				<pubDate><![CDATA[Wed, 14 Jun 2017 13:00:04]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 我把我開發的軟體版本放上去，再麻煩大大一下，謝謝 
<br>
http://cht.tw/h/3n24h]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1387.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1387.page</link>
				<pubDate><![CDATA[Wed, 14 Jun 2017 18:12:24]]> GMT</pubDate>
				<author><![CDATA[ dream1978]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 為什麼會出現jre1.5.0_14.rar ?]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1388.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1388.page</link>
				<pubDate><![CDATA[Wed, 14 Jun 2017 20:26:25]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ [quote=andowson]為什麼會出現jre1.5.0_14.rar ?[/quote] 
<br>
<br>
廠商給的教學影片有提到要把1.5版的jre加進去，問廠商也是說目前公司是1.5的環境，所以才會加這一個]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1389.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1389.page</link>
				<pubDate><![CDATA[Thu, 15 Jun 2017 11:58:30]]> GMT</pubDate>
				<author><![CDATA[ dream1978]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ dream1978這樣子問題的原因就很清楚了，你在Eclipse用JDK 1.6編譯，但是上線環境JBoss用的是JRE 1.5，就會出現這個問題。 
<br>
請在Eclipse中的Project設定將Java Compiler改為1.5版本，再重新編。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1390.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1390.page</link>
				<pubDate><![CDATA[Thu, 15 Jun 2017 12:38:27]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ 請問大大一下，除了這三個地方可以修改之外，還有那個地方是我遺漏的地方？ 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1391.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1391.page</link>
				<pubDate><![CDATA[Thu, 15 Jun 2017 18:38:29]]> GMT</pubDate>
				<author><![CDATA[ dream1978]]></author>
			</item>
			<item>
				<title>回覆:JSP精選實用範例(二):檔案上傳</title>
				<description><![CDATA[ dream1978您好: 
<br>
 請在Eclipse的Project名稱上面點一下滑鼠右鍵，點選Properties會跳出一個對話框，調整這邊的Java Compiler設定看看。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/197/1392.page</guid>
				<link>https://forum.andowson.com/posts/preList/197/1392.page</link>
				<pubDate><![CDATA[Fri, 23 Jun 2017 13:38:01]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>