圖片上傳並顯示
給你段代碼,是用來在ie上顯示圖片的(servlet):
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
File file = new File(getServletContext().getRealPath("/")+"out"+"/"+id+".gif");
response.setCharacterEncoding("gb2312");
response.setContentType("doc");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("gb2312"),"iso8859-1"));
System.out.println(new String(file.getName().getBytes("gb2312"),"gb2312"));
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))!=-1)
{
output.write(b, 0, i);
}
output.write(b, 0, b.length);
output.flush();
response.flushBuffer();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
這個程序的功能是根據傳入的文件名(id),來為瀏覽器返回圖片流,顯示在<img>標簽里
標簽的格式寫成如下:
<img src="http://localhost:8080/app/preview?id=111 "/><br/>
顯示的是111.gif這個圖片
你上面的問題:
1.我覺得你的第二個辦法是對的,我們也是這樣做的,需要的是把資料庫的記錄id號傳進servlet,然後讀取這條記錄中的路徑信息,生成流以後返回就是了
關於上傳文件的問題,我記得java中應該專門有個負責文件上傳的類,你調用就行了,上傳後存儲在指定的目錄里,以實體文件的形式存放
你可以參考這個:
http://blog.csdn.net/arielxp/archive/2004/09/28/119592.aspx
回復:
1.是的,在response中寫入流就行了
2.是發到servlet中的,我們一般都是寫成servlet,短小精悍,使用起來方便,struts應該也可以,只是我沒有試過,恩,你理解的很對
❷ ASP製作上傳圖片並顯示圖片
首先我們先來做首熟悉一下將要使用的對象方法。我們用來獲取上一個頁面傳遞過來的數據一般是使用Request對象。同樣的,我們也可以使用Request對象來獲取上傳上來的文件數據,使用的方法是Request.BinaryRead()。而我們要從資料庫中讀出來圖片的數據顯示到網頁上面要用到的方法是:
Request.BinaryWrite()。在我們得到了圖片的數據,要保存到資料庫中的時候,不可以直接使用Insert語句對資料庫進行操作,而是要使用ADO的AppendChunk方法,同樣的,讀出資料庫中的圖片數據,要使用GetChunk方法。各個方法的具體語法如下:
*Request.BinaryRead語法:
variant=Request.BinaryRead(count)
參數
variant
返回值保存著從客戶端讀取到數據。
count
指明要從客戶端讀取的數據量大小,這個值小於或者等於使用方法Request.TotalBytes得到的數據量。
*Request.BinaryWrite語法:
Request.BinaryWritedata
參數
data
要寫入到客戶端瀏覽器中的數據包。
*Request.TotalBytes語法:
variant=Request.TotalBytes
參數
variant
返回從客戶端讀取到數據量的位元組數。
*AppendChunk語法
將數據追加到大型文本、二進制數據Field或Parameter對象。
object.AppendChunkData
參數
objectField或Parameter對象
Data變體型,包含追加到對象中的數據。
說明
使用Field或Parameter對象的AppendChunk方法可將長二進制或字元數
據填寫到對象中。在系統內存讓胡掘有限的情況下,可以使用AppendChunk方法對長整型值進行部分而非全部的操作。
*GetChunk語法
返回大型文本或二進制數據Field對象的全部或部分內容。
variable=field.GetChunk(Size)
返回值
返回變體型。
參數
Size長整型表達式,等於所要檢索的位元組或字元數。
說明
使用Field對象的GetChunk方法檢索其部分或全部長二進制或字元數據。在系統內存有限的情況下,可使用GetChunk方法處理部分而非全部的長整型值。
GetChunk調用返回的數據將賦給「變數」。如果Size大於剩餘的數據,則
GetChunk僅返回剩餘的數據而無需用空白填充「變數」。如果欄位為空,則
GetChunk方法返回Null。
每個後續的GetChunk調用將檢索從前一次GetChunk調用停止處開始的數據。但是,如果從一個欄位檢索數據然後在當前記錄中設置或讀取另一個欄位的值,ADO將認為已從第一個欄位中檢索出數據。如果在第一個欄位上再次調用GetChunk方法,ADO將把調用解釋為新的GetChunk操作並從記錄的起始處開始讀取。如果其他Recordset對象不是首個Recordset對象的副本,則訪問其中的欄位不會破壞GetChunk操作。
如果Field對象的Attributes屬性中的adFldLong位設置為True,則可以對該欄位使用GetChunk方法。
如果在Field對象上使用Getchunk方法時沒有當前記錄,將產生錯誤3021(無當前記錄)。
接下來,我們就要來設計我們的資料庫坦核了,作為測試我們的資料庫結構如下(access2000):
欄位名稱 類型 描述
id 自動編號 主鍵值
imgOLE對象 用來保存圖片數據
對於在MSsqlServer7中,對應的結構如下:
欄位名稱 類型 描述
id int(Identity) 主鍵值
img image 用來保存圖片數據
現在開始正式編寫我們的純ASP代碼上傳部分了,首先,我們有一個提供給用戶的上傳界面,可以讓用戶選擇要上傳的圖片。代碼如下
(upload.htm):
<html>
<body>
<center>
<form name="mainForm" enctype="multipart/form-data" action="process.asp" method=post>
<inputtype=filename=mefile><br>
<inputtype=submitname=okvalue="OK">
</form>
</center>
</body>
</html>
❸ asp上傳圖片並顯示的代碼
<html>
<head>
<meta http-equiv="陸中Content-Type" content="text/html; charset=utf-8">
<script language=javascript src="dialog.js"></script>
<script language="javascript">
document.write ("<link href='../language/zh-cn.css' type='text/css' rel='stylesheet'>");
document.write ("<link href='../dialog/dialog.css' type='text/css'毀孝 rel='stylesheet'>");
var sAction = "INSERT";
var sTitle = "上早余山傳圖片";
var oControl;
var oSeletion;
var sRangeType;
var sFromUrl = "http://";
var sAlt = "";
var sBorder = "0";
var sBorderColor = "";
var sFilter = "";
var sAlign = "";
var sWidth = "";
var sHeight = "";
var sVSpace = "";
var sHSpace = "";
var sSLTUrl = "";
var sCheckFlag = "file";
document.write("<title>上傳圖片</title>");
function InitDocument(){
d_fromurl.value = sFromUrl;
}
function RadioClick(what){
if (what=="url"){
d_checkfromfile.checked=false;
d_fromurl.disabled=false;
d_checkfromurl.checked=true;
d_file.myform.uploadfile.disabled=true;
}else{
d_checkfromurl.checked=false;
d_file.myform.uploadfile.disabled=false;
d_checkfromfile.checked=true;
d_fromurl.disabled=true;
}
}
function UploadLoaded(){
RadioClick(sCheckFlag);
}
function UploadError(sErrDesc){
AbleItems();
RadioClick('file');
divProcessing.style.display="none";
try {
BaseAlert(d_file.myform.uploadfile,eval(sErrDesc));
}
catch(e){}
}
function UploadSaved(sPathFileName, sPathFileName_s){
d_fromurl.value = sPathFileName;
sSLTUrl = sPathFileName_s;
ReturnValue();
}
function ReturnValue(){
sFromUrl = d_fromurl.value;
if (sFromUrl==""){
window.returnValue = null;}
else {
window.returnValue = sFromUrl;
}
window.close();
}
function ok(){
if (d_checkfromurl.checked){
ReturnValue();
}else{
if (!d_file.CheckUploadForm()) return false;
DisableItems();
divProcessing.style.display="";
d_file.myform.submit();
}
}
function DisableItems(){
d_checkfromfile.disabled=true;
d_checkfromurl.disabled=true;
d_fromurl.disabled=true;
Ok.disabled=true;
}
function AbleItems(){
d_checkfromfile.disabled=false;
d_checkfromurl.disabled=false;
d_fromurl.disabled=false;
Ok.disabled=false;
}
function doPreview(){
var url;
if (d_checkfromurl.checked){
url = d_fromurl.value;
}else{
url = d_file.document.myform.uploadfile.value;
}
if (url){
imgPreview.src = url;
setPreview()
}else{
tdPreview.innerHTML = "";
}
}
function setPreview(){
var width = imgPreview.width;
var height = imgPreview.height;
if (imgPreview.src){
var boxWidth = tdPreview.offsetWidth;
var boxHeight = tdPreview.offsetHeight;
if ((width>boxWidth)||(height>boxHeight)){
var nw = boxWidth/width;
var nh = boxHeight/height;
if (nw>nh){
height = boxHeight;
width = width*nh;
}else{
width = boxWidth;
height = height*nw;
}
}
tdPreview.innerHTML = "<img border=0 src='"+imgPreview.src+"' width='"+width+"' height='"+height+"'>";
tdPreviewSize.innerHTML = imgPreview.width+" * "+imgPreview.height;
}
}
</script>
<style type="text/css">
<!--
body {
margin-left: 3px;
margin-top: 3px;
margin-right: 3px;
margin-bottom: 3px;
}
-->
</style>
<body onLoad="InitDocument()">
<table width="100%" border=0 align=center cellpadding=0 cellspacing=5>
<tr>
<td><table border=0 cellpadding=0 cellspacing=0 align=center width="100%">
<tr>
<td><fieldset>
<legend><span lang=DlgImgSource>圖片來源</span></legend>
<table border=0 cellpadding=5 cellspacing=0 width="100%">
<tr>
<td><table border=0 cellpadding=0 cellspacing=2 width="100%">
<tr>
<td noWrap width="20%"><input type=radio id="d_checkfromfile" value="1" onClick="RadioClick('file')">
<label for=d_checkfromfile><span lang=DlgFromFile>上傳</span></label>
:</td>
<td noWrap width="80%"><Script Language=JavaScript>
document.write("<iframe id=d_file frameborder=0 src='asp/upload.asp?type=image&style=coolblue&language=zh-cn' width='100%' height='22' scrolling=no></iframe>");
</Script>
</td>
</tr>
<tr>
<td noWrap width="20%"><input type=radio id="d_checkfromurl" value="1" onClick="RadioClick('url')">
<label for=d_checkfromurl><span lang=DlgFromUrl>網路</span></label>
:</td>
<td noWrap width="80%"><input type=text id="d_fromurl" style="width:100%" size=30 value=""></td>
</tr>
</table></td>
</tr>
</table>
</fieldset></td>
</tr>
<tr>
<td height=5></td>
</tr>
<tr>
<td noWrap align=right colspan=2><input type=button id=btnPreivew lang=DlgImgPreview onClick="doPreview()" value="預覽">
<input type=submit value='確定' id=Ok onClick="ok()" lang=DlgBtnOK>
<input type=button value='取消' onClick="window.close();" lang=DlgBtnCancel></td>
</tr>
<tr>
<td><fieldset style="height:100%">
<legend><span lang=DlgImgPreview>預覽</span></legend>
<table border=0 cellpadding=0 cellspacing=5 width="100%" height="200" valign=top>
<tr>
<td bgcolor=#FFFFFF align=center valign=middle id=tdPreview height="100%"></td>
</tr>
<tr>
<td align=center id=tdPreviewSize></td>
</tr>
</table>
</fieldset></td>
</tr>
</table></td>
</tr>
</table>
<div id=divProcessing style="width:200px;height:30px;position:absolute;left:70px;top:100px;display:none">
<table border=0 cellpadding=0 cellspacing=1 bgcolor="#000000" width="100%" height="100%">
<tr>
<td bgcolor=#3A6EA5><marquee align="middle" behavior="alternate" scrollamount="5">
<font color=#FFFFFF><span lang=DlgComUploading></span></font>
</marquee></td>
</tr>
</table>
</div>
<img id=imgPreview src='' border=0 style="visibility:hidden" onload="setPreview()">
</body>
</html> 以上是其中的上傳圖片查看頁面 你去網路上找一下eWebEditor編輯器,這個就可以解決你想要的效果。如有不明白可以直接再問!
❹ php實現上傳圖片到資料庫並顯示輸出的方法
本文實例講述了PHP實現上傳圖片到資料庫並顯示輸出的方法。分享給大家供大家參考,具體如下:
1.
創建數據表
CREATE
TABLE
ccs_image
(
id
int(4)
unsigned
NOT
NULL
auto_increment,
description
varchar(250)
default
NULL,
bin_data
longblob,
filename
varchar(50)
default
NULL,
filesize
varchar(50)
default
NULL,
filetype
varchar(50)
default
NULL,
PRIMARY
KEY
(id)
)engine=myisam
DEFAULT
charset=utf8
2.
用於上傳圖片到伺服器的頁面
upimage.html
<!doctype
html>
<html
lang="en">
<head>
<meta
charset="UTF-8">
<meta
name="viewport"
content="width=device-width,
user-scalable=no,
initial-scale=1.0,
maximum-scale=1.0,
minimum-scale=1.0">
<meta
http-equiv="X-UA-Compatible"
content="ie=edge">
<style
type="text/css">
*{margin:
1%}
</style>
<title>Document</title>
</head>
<body>
<form
method="post"
action="upimage.php"
enctype="multipart/form-data">
描述:
<input
type="text"
name="form_description"
size="40">
<input
type="hidden"
name="MAX_FILE_SIZE"
value="1000000">
<br>
上傳文件到資料庫:
<input
type="file"
name="form_data"
size="40"><br>
<input
type="submit"
name="submit"
value="submit">
</form>
</body>
</html>
3.
處理圖片上傳的php
upimage.php
<?php
if
(isset($_POST['submit']))
{
$form_description
=
$_POST['form_description'];
$form_data_name
=
$_FILES['form_data']['name'];
$form_data_size
=
$_FILES['form_data']['size'];
$form_data_type
=
$_FILES['form_data']['type'];
$form_data
=
$_FILES['form_data']['tmp_name'];
$dsn
=
'mysql:dbname=test;host=localhost';
$pdo
=
new
PDO($dsn,
'root',
'root');
$data
=
addslashes(fread(fopen($form_data,
"r"),
filesize($form_data)));
//echo
"mysqlPicture=".$data;
$result
=
$pdo->query("INSERT
INTO
ccs_image
(description,bin_data,filename,filesize,filetype)
VALUES
('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
if
($result)
{
echo
"圖片已存儲到資料庫";
}
else
{
echo
"請求失敗,請重試";
注:圖片是以二進制blob形式存進資料庫的,像這樣
4.
顯示圖片的php
getimage.php
<?php
$id
=2;//
$_GET['id'];
為簡潔,直接將id寫上了,正常應該是通過用戶填入的id獲取的
$dsn='mysql:dbname=test;host=localhost';
$pdo=new
PDO($dsn,'root','root');
$query
=
"select
bin_data,filetype
from
ccs_image
where
id=2";
$result
=
$pdo->query($query);
$result=$result->fetchAll(2);
//
var_mp($result);
$data
=
$result[0]['bin_data'];
$type
=
$result[0]['filetype'];
Header(
"Content-type:
$type");
echo
$data;
到瀏覽器查看已經上傳的圖片,看是否可以顯示
是沒有問題的,證明圖片已經以二進制的形式存儲到資料庫了
更多關於PHP相關內容感興趣的讀者可查看本站專題:《php+mysql資料庫操作入門教程》、《php+mysqli資料庫程序設計技巧總結》、《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《php字元串(string)用法總結》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:php實現上傳圖片保存到資料庫的方法php上傳圖片存入資料庫示例分享php上傳圖片到指定位置路徑保存到資料庫的具體實現php中如何將圖片儲存在資料庫里php下將圖片以二進制存入mysql資料庫中並顯示的實現代碼php
從資料庫提取二進制圖片的處理代碼php將圖片保存入mysql資料庫失敗的解決方法php將圖片文件轉換成二進制輸出的方法php圖片的二進制轉換實現方法
❺ .net如何上傳圖片並且顯示在頁面上
1.網站根目錄下新建一個 文件夾 UploadFiles
//上傳文件按鈕
protected void btnUpload_Click(object sender, EventArgs e)
{
//定義保存路徑
string savePath = @"~/UploadFiles";
fudTest 是控制項id
//上傳文件
if (fudTest.HasFile)
{
try
{
fudTest.SaveAs(Server.MapPath(savePath) + "\\" + fudTest.FileName);
//可以插入數據
Image1.ImageUrl = "~/UploadFiles/" + fudTest.FileName;
}
catch (Exception ex)
{
lblerror.Text = "發生錯誤:" + ex.Message.ToString();
}
}
else
{
lblMessage.Text = "沒有選擇要上傳的文件!";
}
}
❻ jsp+servlet 上傳圖片並顯示出來
其實你這個擋也顯示圖片其實很簡單的,
你的需求無非是兩個
1.servlet上傳文件(圖片)
2.點擊 瀏覽 圖標,然後選擇圖片文件,然後就可以在頁面中的某個地方看到圖片
是這兩個需求么?
首先說第二個吧。
你上傳圖片之後,就馬上觸發js函數,內容為
var PicPath = document.getElementById("yourfile").value;
document.getElementById("yourDiv").innerHTML="<IMG src="+PicPath+"/>";
OK了
第一個嘛就無所謂說了,不過我還是貼一個代碼吧,
public void upLoadFile(HttpServletRequest request, HttpServletResponse response) {
PrintWriter out = null;
response.setCharacterEncoding("UTF-8");
//實例化文件工廠
FileItemFactory factory = new DiskFileItemFactory();
//配置上傳組件ServletFileUpload
ServletFileUpload upload = new ServletFileUpload(factory);
try {
out = response.getWriter();
//從request得到所有上傳域的列表
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list) {
//isFormField判斷一個item類對象封裝的是一個普通的表單欄位還是文件表單欄位。
// 如果item是文件域,則做出如下處理:
if (!item.isFormField()) {
//上傳文件域的Name
String fileName = item.getName();
//截取擴展名
int idx = fileName.lastIndexOf(".");
String extension = fileName.substring(idx);
//獲取文件名
String name = new Date().getTime() + extension;
//得到文件夾的物理路徑
String path = this.getServletContext().getRealPath("\\upload");
//創建一個File
File file = new File(path + "\\" + name);
FileOutputStream o = new FileOutputStream(file);
InputStream in = item.getInputStream();
try {
LoadProcessServlet.process = 0;
LoadProcessServlet.total = 100;
LoadProcessServlet.isEnd = false;
LoadProcessServlet.total = item.getSize();
byte b[] = new byte[1024];
int n;
while ((n = in.read(b)) != -1) {
LoadProcessServlet.process+=n;
o.write(b, 0, n);
System.out.println("實際:"+LoadProcessServlet.process);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
LoadProcessServlet.isEnd = true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
❼ 怎樣實現圖片文件的上傳與顯示
用FileUpload控制項
if (FileUpload1.HasFile)//判斷是否存在
{
string name = FileUpload1.FileName;//火的文件名
string type = name.Substring(name.LastIndexOf(".") + 1).ToLower();//獲得文件類型
if (type == "jpg" || type == "bmp")//判斷文件類型
{
string dt = DateTime.Now.ToString("yyMMddhhmmss");//隨機文件類型
string savename = dt + "." + type; //要保存的名字
string path = "photo"+"\\" + savename;//路徑
try
{
//再這里執行一個SQL語句,就是那文件名和相對路徑插入到資料庫
FileUpload1.SaveAs(Server.MapPath("photo")+"\\"+savename);
Response.Write("<script language='javascript'>alert('上傳文件成功!');</script>");
}
catch
{
Response.Write("<script>alert('失敗')</script>");
}
}
else
{
Response.Write("<script>alert('文件格式不正確')</script>");
}
}
else
{
Response.Write("<script>alert('沒有文件')</script>");
}
顯示嘛簡單的,用<img> ,src=資料庫中那個路徑就行了
❽ MVC上傳圖片並顯示怎麼做呢,最好有demo ,我已經寫出一部分但是後台不太會
上傳圖片前台直接可以用<input type="file">標簽來實現,後台接收到文件並保存下來,想要如何處理都可以。
public String SaveFile(MultipartFile imgFile, HttpServletRequest req){
if(!imgFile.isEmpty()) {
try {
//獲得後台的真實路徑
String realpath=req.getSession().getServletContext().getRealPath("/resource/images");
String pathString=realpath+"/"+imgFile.getOriginalFilename();
System.out.println(pathString);
//在後台保存圖片
imgFile.transferTo(new File(pathString));
return pathString;//返回圖片存儲路徑
} catch (IllegalStateException e) {
e.printStackTrace();
}
return null;
}
❾ mvc視圖中怎麼上傳圖片並顯示
如果只是上傳的話那太容易了,如果還要顯示那就難了,因為要顯示的話就不能只向伺服器提交一次請求,必須非同步提交。下面的例子是我親自寫的,非同步提交上傳圖片並預覽。全部代碼都在。
返回到前台頁面的JSON格式對象是以類的對象。
publicclassReturnImage
{
publicstringbig{get;set;}
publicstringsmall{get;set;}
publicstringisSuccessfull{get;set;}
publicstringmessage{get;set;}
}
對於上傳和生成縮略圖,請自行完成,以下是ASP.NETMVC的例子。
publicclassHomeController:Controller
{
//
//GET:/Home/
publicActionResultIndex()
{
returnView();
}
///<summary>
///上傳圖片
///</summary>
///<returns></returns>
publicActionResultUploadImage()
{
//定義錯誤消息
JsonResultmsg=newJsonResult();
try
{
//接受上傳文件
HttpPostedFileBasepostFile=Request.Files["upImage"];
if(postFile!=null)
{
DateTimetime=DateTime.Now;
//獲取上傳目錄轉換為物理路徑
stringuploadPath=Server.MapPath("~/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/");
//文件名
stringfileName=time.ToString("yyyyMMddHHmmssfff");
//後綴名稱
stringfiletrype=System.IO.Path.GetExtension(postFile.FileName);
//獲取文件大小
longcontentLength=postFile.ContentLength;
//文件不能大於2M
if(contentLength<=1024*2048)
{
//如果不存在path目錄
if(!Directory.Exists(uploadPath))
{
//那麼就創建它
Directory.CreateDirectory(uploadPath);
}
//保存文件的物理路徑
stringsaveFile=uploadPath+fileName+"_big"+filetrype;
try
{
//保存文件
postFile.SaveAs(saveFile);
//保存縮略圖的物理路徑
stringsmall=uploadPath+fileName+"_small"+filetrype;
MakeThumbnail(saveFile,small,320,240,"W");
ReturnImageimage=newReturnImage();
image.big="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_big"+filetrype;
image.small="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_small"+filetrype;
msg=Json(image);
}
catch
{
msg=Json("上傳失敗");
}
}
else
{
msg=Json("文件大小超過限制要求");
}
}
else
{
msg=Json("請選擇文件");
}
}
catch(Exceptione)
{
;
}
msg.ContentType="text/html";
returnmsg;
}
///<summary>
由於回答超過最大限制,///生成縮略圖的代碼請向我索取
❿ java實現圖片上傳至伺服器並顯示,如何做希望要具體的代碼實現
很簡單。
可以手寫IO讀寫(有點麻煩)。
怕麻煩的話使用FileUpload組件 在servlet里doPost嵌入一下代碼
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//設置保存上傳文件的目錄
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("無法訪問存儲目錄!");
return;
}
//根據路徑創建一個文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目錄不存在 創建一個 不能創建輸出...
{
out.println("無法創建存儲目錄!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能處理multipart/form-data類型的數據!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上傳200M數據
fu.setSizeMax(1024 * 1024 * 200);
//超過1M的欄位數據採用臨時文件緩存
fu.setSizeThreshold(1024 * 1024);
//採用默認的臨時文件存儲位置
//fu.setRepositoryPath(...);
//設置上傳的普通欄位的名稱和文件欄位的文件名所採用的字元集編碼
fu.setHeaderEncoding("gb2312");
//得到所有表單欄位對象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request對象中上傳的文件
}
catch (FileUploadException e)
{
out.println("解析數據時出現如下問題:");
e.printStackTrace(out);
return;
}
//處理每個表單欄位
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存儲文件時出現如下問題:");
e.printStackTrace(out);
return;
}
finally //總是立即刪除保存表單欄位內容的臨時文件
{
fi.delete();
}
}
}
注意 JSP頁面的form要加enctype="multipart/form-data" 屬性, 提交的時候要向伺服器說明一下 此頁麵包含文件。
如果 還是麻煩,乾脆使用Struts 的上傳組件 他對FileUpload又做了封裝,使用起來更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以聯系我。