java圖片伺服器,java獲取伺服器上的圖片

本文目錄一覽:

java 中如何向伺服器上傳圖片

我們使用一些已有的組件幫助我們實現這種上傳功能。

常用的上傳組件:

Apache 的 Commons FileUpload

JavaZoom的UploadBean

jspSmartUpload

以下,以FileUpload為例講解

1、在jsp端

form id=”form1″ name=”form1″ method=”post” action=”servlet/fileServlet” enctype=”multipart/form-data”

要注意enctype=”multipart/form-data”

然後只需要放置一個file控制項,並執行submit操作即可

input name=”file” type=”file” size=”20″

input type=”submit” name=”submit” value=”提交”

2、web端

核心代碼如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(“UTF-8”);

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List items = upload.parseRequest(request);

Iterator itr = items.iterator();

while (itr.hasNext()) {

FileItem item = (FileItem) itr.next();

if (item.isFormField()) {

System.out.println(“表單參數名:” + item.getFieldName() + “,表單參數值:” + item.getString(“UTF-8”));

} else {

if (item.getName() != null !item.getName().equals(“”)) {

System.out.println(“上傳文件的大小:” + item.getSize());

System.out.println(“上傳文件的類型:” + item.getContentType());

System.out.println(“上傳文件的名稱:” + item.getName());

File tempFile = new File(item.getName());

File file = new File(sc.getRealPath(“/”) + savePath, tempFile.getName());

item.write(file);

request.setAttribute(“upload.message”, “上傳文件成功!”);

}else{

request.setAttribute(“upload.message”, “沒有選擇上傳文件!”);

}

}

}

}catch(FileUploadException e){

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

request.setAttribute(“upload.message”, “上傳文件失敗!”);

}

request.getRequestDispatcher(“/uploadResult.jsp”).forward(request, response);

}

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

—————————–

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

javaweb中為什麼要重啟伺服器才能更新圖片

javaweb中要重啟伺服器才能更新圖片原因:這是伺服器的自我保護機制,為了防止暴露絕對路徑。把靜態的文件在啟動的時候都會載入到classpath的目錄下的,package時把static目錄下的資源一起打包到了jar包或war包中,此時上傳的圖片並未傳入啟動了的項目中,所以訪問不到。項目重啟後又會打成新的jar包,包含上一次上傳的的圖片,此時才會在頁面上顯示簡單點說就是:上傳圖片後target包中沒有載入重啟伺服器後target包內會重新載入。

java實現圖片上傳至伺服器並顯示,如何做?

給你段代碼,是用來在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=” “/br/

顯示的是111.gif這個圖片

你上面的問題:

1.我覺得你的第二個辦法是對的,我們也是這樣做的,需要的是把資料庫的記錄id號傳進servlet,然後讀取這條記錄中的路徑信息,生成流以後返回就是了

關於上傳文件的問題,我記得java中應該專門有個負責文件上傳的類,你調用就行了,上傳後存儲在指定的目錄里,以實體文件的形式存放

你可以參考這個:

回復:

1.是的,在response中寫入流就行了

2.是發到servlet中的,我們一般都是寫成servlet,短小精悍,使用起來方便,struts應該也可以,只是我沒有試過,恩,你理解的很對

java保存圖片到本地伺服器共享

1、調用第一個介面時,先將多張圖片存到本地。再調用第二個介面,將圖片統一上傳到圖片伺服器上。

2、根據類別,上傳多張圖片。

java 如何只通過後台把本地的圖片上傳的伺服器上去?

這裡你弄錯了一個問題;\x0d\x0a你的程序是要傳遞圖片的二進位數據.\x0d\x0a而不是傳遞路徑,然後再到伺服器讀取文件數據(你的伺服器有這個文件?)\x0d\x0a只有當你的伺服器下有這個文件了,你傳遞一個路徑,讀取是可以的.\x0d\x0a//—\x0d\x0a關於如何上傳文件, 自己google一下,很多教程

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-21 01:16
下一篇 2024-11-21 01:16

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 用Python繪製酷炫圖片

    在本篇文章中,我們將展示如何使用Python繪製酷炫的圖片。 一、安裝Python繪圖庫 在使用Python繪製圖片之前,我們需要先安裝Python繪圖庫。Python有很多繪圖庫…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論