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

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

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

更新時間:2022-07-12 11:30:34 來源:動力節(jié)點 瀏覽2171次

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

業(yè)務描述

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

解決方案

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

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

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

3.業(yè)務邏輯的優(yōu)化和完善。

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

1.新建一個網(wǎng)頁

  <! 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) {
         字符串內(nèi)容類型 = img.getContentType();    //獲取文件類型
          System.out.println("文件類型為:" +   contentType);
         字符串 originalFilename = img.getOriginalFilename();     //獲取文件原名
          //判斷文件是否為空
          if (! img.isEmpty()) {
              File targetImg = new File("F:/img" );
              //判斷文件夾是否存在
              if (! targetImg.exists()) {
                  targetImg.mkdirs();    //級聯(lián)創(chuàng)建文件夾
              }
              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>
       <!-- 緩沖區(qū)大小(Company:KB) -->
       <property name="maxInMemorySize" value="1024"></property>
 </bean>

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

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

互聯(lián)網(wǎng)上有很多內(nèi)容。本部分介紹使用 HttpURLConnection 進行上傳。第一種方法相對復雜。您需要手動封裝請求并傳播數(shù)十行代碼。二是如果項目比較復雜,使用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" ;
         上傳圖片(網(wǎng)址,“dfsdfsdfsdf” ,路徑);
      }  
     公共 靜態(tài)String uploadImage(String path, String base64String, String imageFilePath) throws ClientProtocolException, IOException {
          // 1. 創(chuàng)建上傳需要的元素類型
          // 1.1 本地上傳圖片加載文件
          File imageFile = new File(imageFilePath);
         文件體圖像文件體 =新文件體(圖像文件);
          // 1.2 加載過程base64編碼的圖片數(shù)據(jù)
  //         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 執(zhí)行發(fā)送網(wǎng)絡請求的動作
          CloseableHttpClient httpClient =HttpClients.createDefault();
          CloseableHttpResponse 響應 = httpClient.execute(httpPost);
          // 5. 獲取返回的實體內(nèi)容對象并解析內(nèi)容
          HttpEntity resultEntity = response.getEntity();
         字符串響應消息 = "" ;
          try {
              if (resultEntity != null ) {
                  InputStream is = resultEntity.getContent();
                  BufferedReader br = new BufferedReader( new InputStreamReader(is));
                 字符串緩沖區(qū)某人 =新字符串緩沖區(qū)();
                 字符串行 = "" ;
                  while ((line = br.readLine()) != null ) {
                       sb.append(line);
                  }
                 響應消息 = sb.toString();
                  System.out.println("響應內(nèi)容為:" + responseMessage);
              }
              EntityUtils.consume(resultEntity);
          }最后{
             如果(空!=響應){
                 響應。關閉();
              }
          }
         返回響應消息;
      }
 }

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

業(yè)務邏輯的優(yōu)化和完善

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.服務器的改進

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 夜夜爽www| 欧美色综合| 77成人影视 | 国产人成久久久精品 | 91久久国产青草亚洲 | 天天综合天天添夜夜添狠狠添 | 男人的天堂视频在线 | 色视频亚洲 | 青青青爽视频在线观看入口 | 99精品免费观看 | 久久网精品视频 | 欧美午夜在线播放 | 中文字幕在线观看2023 | 日韩一级视频免费观看 | 草草免费观看视频在线 | 成人私人影院www片免费高清 | 五月婷婷中文 | 97影院理论在线观看 | 亚洲欧美综合乱码精品成人网 | 国内精品伊人久久久影视 | 欧美日韩亚洲第一页 | 亚洲精品久久久久中文字小说 | 一区二区日韩欧美 | 91久久精品国产亚洲 | 亚洲在线观看视频 | 九九国产精品九九 | 国模无水印一区二区三区 | 欧美激情一区二区 | 四虎影院.com | 国产做国产爱免费视频 | 午夜影视在线 | 在线观看一区二区精品视频 | 亚洲自拍第二页 | 综合在线亚洲 | 国内精品久久久久影院6 | 狠狠色狠狠色综合久久第一次 | 天天干狠狠干 | 日本不卡视频在线观看 | 日韩精品一区二区三区中文在线 | 成人久久精品一区二区三区 | 四虎影视在线免费观看 |