java上傳圖片文件回顯(java導入圖片並顯示圖片)

  • 1、在java代碼中怎麼從伺服器上把圖片拿來放到資料庫里
  • 2、java實現圖片上傳至伺服器並顯示,如何做?希望要具體的代碼實現
  • 3、java 上傳圖片到CDN 亞馬遜伺服器上,要回顯伺服器的圖片,問題在這:

大概流程:

1.上傳插件的選擇:此篇博文選擇的是jQuery的zyupload文件上傳插件;

2.上傳請求發起後,java代碼的處理:你是要將上傳的圖片只保存在伺服器還是只保存在資料庫還是說兩者都採取。上傳到伺服器很簡單,保存到資料庫也很簡單,但是此處需要考慮業務,圖片保存在資料庫時採用哪種保存方式(本博文業務來自於項目,因為圖片數量巨多,故在資料庫是通過保存圖片的路徑實現的,並非二進位流);

3.圖片保存在資料庫後,在前段頁面的回顯功能。

很簡單。

可以手寫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又做了封裝,使用起來更傻瓜化,很容易掌握。

—————————–

以上回答,如有不明白可以聯繫我。

SVN在伺服器端的存儲方式和客戶端是不一樣的,所以在伺服器端是看不到源文件的。伺服器端有兩種存儲方式FSFS和BDB,目前默認都是FSFS。

要導入文件有兩種做法:

1、用import指令,將客戶端文件夾導入到伺服器端

2、先checkout空庫到客戶端,然後將要導入的文件夾放入客戶端checkout產生的空文件夾,然後執行add將這些文件夾納入SVN控制,最後執行commit上傳到伺服器

建議用後一種方法,因為前一種方法如果操作失誤容易導致文件夾層次混亂

原創文章,作者:V1P9O,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127231.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
V1P9O的頭像V1P9O
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

發表回復

登錄後才能評論