黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java上傳圖片到服務(wù)器的方法

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

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

業(yè)務(wù)描述

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

解決方案

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

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

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

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

服務(wù)器接收瀏覽器上傳的圖片

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層進(jìn)行編碼

 @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.啟動項目,打開瀏覽器顯示對應(yīng)圖片上傳網(wǎng)頁,選擇圖片,點擊上傳。如果不走出本地路徑,應(yīng)該會看到剛剛上傳的圖片。

服務(wù)器接收客戶端上傳的圖片

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

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

1.引入相關(guān)依賴

 <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.編寫客戶端程序

 導(dǎo)入java.io.BufferedReader;
 導(dǎo)入java.io.File;
 導(dǎo)入java.io.IOException;
 導(dǎo)入java.io.InputStream;
 導(dǎo)入java.io.InputStreamReader;
 導(dǎo)入java.util.Arrays;  
 導(dǎo)入o??rg.apache.commons.codec.binary.Base64;
 導(dǎo)入o??rg.apache.commons.lang3.StringUtils;
 導(dǎo)入org.apache.http.HttpEntity;
 導(dǎo)入o??rg.apache.http.client.ClientProtocolException;
 進(jìn)口org.apache.http.client.methods.CloseableHttpResponse;
 導(dǎo)入org.apache.http.client.methods.HttpPost;
 導(dǎo)入o??rg.apache.http.entity.ContentType;
 導(dǎo)入o??rg.apache.http.entity.mime.MultipartEntityBuilder;
 導(dǎo)入o??rg.apache.http.entity.mime.content.ByteArrayBody;
 導(dǎo)入o??rg.apache.http.entity.mime.content.FileBody;
 導(dǎo)入o??rg.apache.http.entity.mime.content.StringBody;
 導(dǎo)入o??rg.apache.http.impl.client.CloseableHttpClient;
 導(dǎo)入o??rg.apache.http.impl.client.HttpClients;
 進(jìn)口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)絡(luò)請求的動作
          CloseableHttpClient httpClient =HttpClients.createDefault();
          CloseableHttpResponse 響應(yīng) = httpClient.execute(httpPost);
          // 5. 獲取返回的實體內(nèi)容對象并解析內(nèi)容
          HttpEntity resultEntity = response.getEntity();
         字符串響應(yīng)消息 = "" ;
          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);
                  }
                 響應(yīng)消息 = sb.toString();
                  System.out.println("響應(yīng)內(nèi)容為:" + responseMessage);
              }
              EntityUtils.consume(resultEntity);
          }最后{
             如果(空!=響應(yīng)){
                 響應(yīng)。關(guān)閉();
              }
          }
         返回響應(yīng)消息;
      }
 }

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

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

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

  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) {
              //圖片未標(biāo)記為上傳
              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.服務(wù)器的改進(jìn)

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

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

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 宠溺高h共妻| 狠狠干97 | 老妇女人一级毛片 | 久久精品视频5 | 热热涩热热狠狠色香蕉综合 | 国产性大片黄在线观看在线放 | 国产精品自在线天天看片 | 在线日本人观看成本人视频 | 亚洲一区中文字幕在线观看 | 日韩一区二区三区视频在线观看 | 看片网站在线观看 | 免费一级a毛片在线播放视 免费一级a毛片在线播出 | 久久精品视频大全 | 国产精品123 | 热99re久久精品2久久久 | 国产成人v视频在线观看 | 精品一区二区三区的国产在线观看 | 国产精品免费aⅴ片在线观看 | 亚洲国产精品综合欧美 | 天海翼一区二区三区四区 | 爆操在线 | 日本人真淫视频一区二区三区 | 99国产精品久久久久久久成人热 | 日韩亚洲欧美一区 | 人人澡人摸人人爽歪歪 | 日韩在线观看内窥镜 | 免费香蕉一区二区在线观看 | 一个人看的手机视频www | 国产成人女人在线视频观看 | 女性污污18污污 | 亚洲欧美日韩第一页 | 午夜剧场网站 | 亚洲你xx我xx网站 | 制服丝袜日日 | 大学生美女穿黑色丝袜网站 | 黄色片www| 麻豆一区 | 国产丝袜精品丝袜久久 | 日韩欧美一区二区三区免费观看 | 免费成人激情视频 | 午夜日韩|