大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java上傳圖片到服務器的方法

Java上傳圖片到服務器的方法

更新時間:2022-07-12 11:30:34 來源:動力節點 瀏覽2415次

在設計豐富多彩的網站或業務邏輯豐富的程序的過程中,必然會有很多圖片的相關操作,尤其是圖片的上傳。紙質辦公室可能需要備份和上傳紙質文件,網站建設可能需要上傳用戶頭像、圖片描述等,都需要將圖片從本地上傳到互聯網(服務器)。

業務描述

當業務需要時,機器會隨著不斷制作的照片上傳到網站上,以便在網站上查看。

解決方案

由于圖片的處理比較新,我們打算一點一點的解決這些業務需求。一、業務分為以下幾個部分:

1.服務器接收瀏覽器上傳的圖片。這很容易實現,因為大部分服務器端開發都是基于B/S架構,即邏輯和瀏覽器端開發。

2.服務器接收客戶端上傳的圖片。這看起來可能不難,但是如何正確發送數據就有點難了,這也是今天筆者踩坑的地方。

3.業務邏輯的優化和完善。

服務器接收瀏覽器上傳的圖片

1.新建一個網頁

  <! DOCTYPE html > 
  < html > 
  < head > 
  < meta charset ="UTF-8" > 
  < title >圖片上傳</ title > 
  </ head > 
  < body > 
      < formaction ="/plant / upload.action" enctype ="multipart/form-data" 
        方法="post" > 
         圖片:type ="file" name ="img" />  <br /> 11 < input type = "submit" value ="upload" /> 12 </ form > 13 </ body > 14 </ html >

2.對Controller層進行編碼

 @Controller
  public  class UploadController {  
      @RequestMapping(value="/upload",method= RequestMethod.POST)
      @ResponseBody
      public String uploadImg(@RequestParam("img" ) MultipartFile img, HttpServletRequest request,HttpServletResponse response) {
         字符串內容類型 = img.getContentType();    //獲取文件類型
          System.out.println("文件類型為:" +   contentType);
         字符串 originalFilename = img.getOriginalFilename();     //獲取文件原名
          //判斷文件是否為空
          if (! img.isEmpty()) {
              File targetImg = new File("F:/img" );
              //判斷文件夾是否存在
              if (! targetImg.exists()) {
                  targetImg.mkdirs();    //級聯創建文件夾
              }
              try {
                  //開始保存圖片
                  FileOutputStream outputStream = newFileOutputStream("F:/img/" + originalFilename);
                 輸出流.write(img.getBytes());
                 輸出流.flush();
                 輸出流.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
         返回“成功” ;
      }
 }

3.spring和依賴修改

 <!-- 文件上傳組件 -->
 <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>${commons-fileupload.version}< /版本>
 </依賴>
 <!-- 支持文件上傳 -->
 <bean id="multipartResolver" class ="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <!-- 請求編碼格式 -->
       <屬性名="defaultEncoding" value="utf-8"></property>
       <!-- 上傳文件大小(Company:byte) -->
       <property name="maxUploadSize" value="50000000"></property>
       <!-- 緩沖區大小(Company:KB) -->
       <property name="maxInMemorySize" value="1024"></property>
 </bean>

4.啟動項目,打開瀏覽器顯示對應圖片上傳網頁,選擇圖片,點擊上傳。如果不走出本地路徑,應該會看到剛剛上傳的圖片。

服務器接收客戶端上傳的圖片

互聯網上有很多內容。本部分介紹使用 HttpURLConnection 進行上傳。第一種方法相對復雜。您需要手動封裝請求并傳播數十行代碼。二是如果項目比較復雜,使用Session或者Cookie,沒辦法~

基于以上原因,本文選擇使用HttpClient上傳本地圖片

1.引入相關依賴

 <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.3</version>
 </dependency>
 <dependency>
      <groupId> org.apache.httpcomponents</groupId>
      <artifactId>httpmime</artifactId>
      <version>4.5.3</version>
 </dependency>

2.編寫客戶端程序

 導入java.io.BufferedReader;
 導入java.io.File;
 導入java.io.IOException;
 導入java.io.InputStream;
 導入java.io.InputStreamReader;
 導入java.util.Arrays;  
 導入o??rg.apache.commons.codec.binary.Base64;
 導入o??rg.apache.commons.lang3.StringUtils;
 導入org.apache.http.HttpEntity;
 導入o??rg.apache.http.client.ClientProtocolException;
 進口org.apache.http.client.methods.CloseableHttpResponse;
 導入org.apache.http.client.methods.HttpPost;
 導入o??rg.apache.http.entity.ContentType;
 導入o??rg.apache.http.entity.mime.MultipartEntityBuilder;
 導入o??rg.apache.http.entity.mime.content.ByteArrayBody;
 導入o??rg.apache.http.entity.mime.content.FileBody;
 導入o??rg.apache.http.entity.mime.content.StringBody;
 導入o??rg.apache.http.impl.client.CloseableHttpClient;
 導入o??rg.apache.http.impl.client.HttpClients;
 進口org.apache.http.util.EntityUtils;  
  public  class ClientUpload {  
      public  static  void main(String[] args) throws ClientProtocolException, IOException, InterruptedException {
          String url = "http://localhost:8090/plant/upload.action" ;
  //        字符串 basePath = "F:\\img\\"; 
         字符串路徑 = "G:\\123.jpg" ;
         上傳圖片(網址,“dfsdfsdfsdf” ,路徑);
      }  
     公共 靜態String uploadImage(String path, String base64String, String imageFilePath) throws ClientProtocolException, IOException {
          // 1. 創建上傳需要的元素類型
          // 1.1 本地上傳圖片加載文件
          File imageFile = new File(imageFilePath);
         文件體圖像文件體 =新文件體(圖像文件);
          // 1.2 加載過程base64編碼的圖片數據
  //         String imageBase64Data = base64String;
  //         ByteArrayBody byteArrayBody = null;
  //        if (StringUtils.isNotEmpty(imageBase64Data)) {
  //             byte[] byteImage = Base64.decodeBase64(imageBase64Data);
  //             byteArrayBody = new ByteArrayBody(byteImage, "image_name");
  //         }
          // 1.3 上傳對象的加載字符串
          StringBody name = new StringBody("admin" , ContentType.TEXT_PLAIN);
          // 2. 將要上傳的所有元素打包到 HttpEntity 對象中
  //        HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("name", name).addPart("img", imageFileBody).addPart("file2", byteArrayBody).build(); 
          HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("name", name).addPart("img" , imageFileBody).build();
          // 3. 建立HttpPost 對象,包含信息傳輸post news 
          HttpPost httpPost = new HttpPost(path);
          httpPost.setEntity(reqEntity);
          // 4. 建立 HttpClient 對象,傳入 httpPost 執行發送網絡請求的動作
          CloseableHttpClient httpClient =HttpClients.createDefault();
          CloseableHttpResponse 響應 = httpClient.execute(httpPost);
          // 5. 獲取返回的實體內容對象并解析內容
          HttpEntity resultEntity = response.getEntity();
         字符串響應消息 = "" ;
          try {
              if (resultEntity != null ) {
                  InputStream is = resultEntity.getContent();
                  BufferedReader br = new BufferedReader( new InputStreamReader(is));
                 字符串緩沖區某人 =新字符串緩沖區();
                 字符串行 = "" ;
                  while ((line = br.readLine()) != null ) {
                       sb.append(line);
                  }
                 響應消息 = sb.toString();
                  System.out.println("響應內容為:" + responseMessage);
              }
              EntityUtils.consume(resultEntity);
          }最后{
             如果(空!=響應){
                 響應。關閉();
              }
          }
         返回響應消息;
      }
 }

3.到目前為止,如果沒有意外的話,應該可以在控制臺看到令人興奮的“SUCCESS”輸出

業務邏輯的優化和完善

1.由于圖片是不斷生成的,所以需要不斷的上傳圖片,保證上傳的圖片不重復。

  public  static  void main(String[] args) throws ClientProtocolException, IOException, InterruptedException {
      String url = "http://localhost:8090/plant/upload.action" ;
     字符串 basePath = "F:\\img\\" ;
  //    字符串路徑 = "G:\\123.jpg";
  //     uploadImage(url, "dfsdfsdfsdf",path); 
      while ( true ) {
          File file = new File(basePath);
         字符串[] 列表 =文件列表();
          Arrays.sort(list);
          for (String str : list) {
              //圖片未標記為上傳
              if (!str.startsWith("Upload" )) {
                  uploadImage(url, "chao", basePath + str); //上傳圖片
                  new File(basePath + str).renameTo( new File(basePath + "Upload_" + str));    //重命名圖片
              }
          }
          Thread.sleep(1000*60);    //等待 60 秒。
      }
 }

2.服務器的改進

如果想在開發的網站上能夠瀏覽圖片,一般業務比較小,可以直接發到Tomcat服務器,然后記錄路徑寫入數據庫;如果業務比較大,可以在本地設置圖片服務器,可以通過Nginx或者其他技術實現,然后需要將路徑寫入數據庫保存。

以上就是關于“Java上傳圖片到服務器的方法”介紹,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久热在线观看 | 香蕉久久国产 | 久久草在线视频国产一 | 久久天天躁狠狠躁夜夜中文字幕 | 尹人香蕉99久久综合网站 | 亚洲黄色激情视频 | 欧美日韩国产高清 | 中文字幕美日韩在线高清 | 国产自产拍精品视频免费看 | 国产亚洲精品免费 | 欧美va放荡人妇大片 | 性xxx免费视频 | 久久精品国产一区二区 | 四虎影院免费看 | 国产永久| 午夜影院欧美 | 在线观看免费情网站大全 | 久久综合玖玖爱中文字幕 | 一级毛片大全免费播放 | a毛片在线还看免费网站 | 国产乱码精品一区二区三区四川 | 国内精品91久久久久 | 欧美一区中文字幕 | 国产成人综合亚洲欧美在 | 欧美精品福利在线视频 | www激情五月| 欧美日韩成人午夜免费 | 97国产影院 | 免费的爱爱视频 | 深夜免费在线观看 | 成年网站视频在线观看 | 九九干 | 美女被羞羞的网站 | 天天操天天爱天天干 | 国产全黄一级毛片 | 色一情一欲一爱一乱 | 国产成人综合高清在线观看 | 国产一区二区免费在线观看 | 天天射夜夜操 | 桃花福利视频在线观看 | 午夜影院普通 |