国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java通過jersey實現客戶端圖片上傳示例

Java通過jersey實現客戶端圖片上傳示例

2020-08-24 11:02JustCode Java教程

本篇文章主要介紹了Java通過jersey實現客戶端圖片上傳示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

在上一篇筆記 《SpringMVC實現圖片上傳》記錄了將圖片上傳到本地的實現,在很多項目中都會有一臺專門的文件服務器來保存文件的,這邊記錄下客戶端通過jersey上傳圖片到文件服務端的實現。

由于要在不同主機上上傳文件,所以不能直接通過流的方式來寫,需要通過webService來完成,jersey是基于Java的一個輕量級RESTful風格的Web Services框架,它讓客戶端文件上傳變得更簡單。

1. maven依賴

spring的一些包以及fileupload和io包這邊就不貼出來了。

?
1
2
3
4
5
<dependency>
   <groupId>com.sun.jersey</groupId>
   <artifactId>jersey-client</artifactId>
   <version>1.2</version>
</dependency>

2. 配置tomcat下的conf/web.xml文件

打開文件服務器下的此文件,然后搜索readonly這個單詞,可以看到這段注釋代碼:

?
1
2
3
<!--  readonly      Is this context "read only", so HTTP    -->
<!--            commands like PUT and DELETE are      -->
<!--            rejected? [true]             -->

通過注釋可以看到默認情況下當我們進行put或者delete操作的時候,服務器是拒絕訪問的,所以想向服務器上傳文件必須將readonly屬性設置為false。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  <!-- 添加,解決jersey上傳服務器403錯誤 -->
  <init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
  </init-param>
  <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

3. 在文件服務器上創建文件存儲目錄

Java通過jersey實現客戶端圖片上傳示例

在webapp下創建一個upload目錄,為了防止找不到目錄,在空目錄下隨便添加一個文件。

4. controller代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@Controller
@RequestMapping("/upload")
public class UploadController extends BaseController {
  @RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
  @LoginCheck
  public void uploadPic(HttpServletRequest request, PrintWriter out, String lastRealPath) throws IOException {
    // 將當前上下文初始化給CommonsMultipartResolver
    CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    // 檢查form中是否有enctype="multipart/form-data"
    if (resolver.isMultipart(request)) {
      // 強制轉化request
      MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
      // 從表單獲取input名稱
      Iterator<String> iterable = req.getFileNames();
      // 存在文件
      if (iterable.hasNext()) {
        String inputName = iterable.next();
        // 獲得文件
        MultipartFile mf = req.getFile(inputName);
        byte[] mfs = mf.getBytes();
        // 定義文件名
        String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
          fileName = fileName + random.nextInt(10);
        }
        // 獲得后綴名
        String oriFileName = mf.getOriginalFilename();
        String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));
 
        // 要上傳文件的絕對路徑
        String realPath = MallUtil.readProp("upload_file_path") + "/upload/" + fileName + suffix;
        String relativePath = "/upload/" + fileName + suffix;
 
        // 由于我們要在不同主機上上傳文件,所以不能直接通過流的方式來寫,需要通過webService來完成,這邊借助Jersey來完成
        Client client = Client.create();
 
        // 判斷是不是第一次上傳,如果已經上傳過則刪除上一次上傳的文件
       if (StringUtils.isNotBlank(lastRealPath)) {
         WebResource webService = client.resource(lastRealPath);
         webService.delete();
       }
       WebResource webService = client.resource(realPath);
       // 將文件傳到主機上
       webService.put(mfs);
       // 將圖片信息返回給界面回顯
       Map<String, String> map = new HashMap<String, String>();
       map.put("realPath", realPath);
       map.put("relativePath", relativePath);
       // {"relativePath":"/upload/20170215135233634679.png","realPath":"http://localhost:8088/mall-file/upload/20170215135233634679.png"}
       out.write(JsonUtil.jsonString(map));
      }
    }
  }
}

5. 頁面代碼

需要回顯就需要通過ajax來實現圖片上傳,這里使用的是jquery.form.js這個插件

jsp代碼:

?
1
2
3
4
5
6
7
8
<form enctype="multipart/form-data" id="form">  
<div>
  ![](${path}/mall/image/load_image.png)
  <input type="file" id="input-image" name="input-image" onchange="submitUpload()">
  <input id="input-relative-path" name="imgs" type="hidden" >
  <input id="input-last-path" type="hidden">
 </div>
</form>

js代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function submitUpload() {
  var option = {
    url: path + "/upload/uploadPic.do",
    type: "post",
    dataType: "text", // 返回值的數據類型
    beforeSubmit: function (formData, jqForm, options) {
      var imageValue = $("#input-image").val();
      imageValue = $.trim(imageValue);
      return (imageValue != ""); // 沒有選擇圖片,則中斷上傳請求
    },
    success: function (responseText) {
      // {"relativePath":"/upload/20170215135233634679.png","realPath":"http://localhost:8088/mall-file/upload/20170215135233634679.png"}
      var jsonObj = $.parseJSON(responseText);
      $("#image").attr("src", jsonObj.realPath);
      $("#input-relative-path").val(jsonObj.relativePath);
      $("#input-last-path").val(jsonObj.realPath);
    },
    error: function () {
      alert("系統錯誤");
    }
  };
  $("#form").ajaxSubmit(option);
}

6. 常見錯誤

403 則是conf/web.xml中沒有添加readonly為false的配置

409 : com.sun.jersey.api.client.UniformInterfaceException:

PUT http://localhost:8888/mall-file/upload/20170115104302348740.jpg returned a response status of 409 Conflict

確保項目部署在8888端口下并啟動成功,確保項目中存在upload目錄。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.jianshu.com/p/d611fdd0f70c

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 99久久精品一区二区成人 | 欧美成人性生活 | 高清一区二区三区日本久 | 日韩中文字幕一区 | 爱干视频| 色av综合网| 亚洲成av | 国产黄a一级 | 伊人精品视频在线观看 | 国产精品欧美一区二区三区不卡 | 懂色av一区二区三区免费观看 | 寡妇少妇高潮免费看蜜臀a 午夜免费电影 | 成人精品福利视频 | 激情综合网五月婷婷 | 国产精品久久久久久久久久久新郎 | 欧美日韩精品在线 | 老黄网站在线观看 | 观看av | 99热新 | 每日更新在线观看av | 91久久综合 | 黄色免费av| 久久精品综合 | 欧美中文字幕一区二区 | 国产精品一二区 | 国产精品一区久久 | 中国大陆高清aⅴ毛片 | 最近中文字幕免费mv视频7 | 一本大道伊人久久综合 | 日韩欧美在线观看视频 | 成人久久久 | 亚洲一区二区美女 | 久久亚洲天堂 | 97久久久 | 久久久精品网 | 欧美一区二区三区xxxx监狱 | 久久精品国产99精品国产亚洲性色 | 欧美亚洲一 | 成人午夜 | 日韩av一区二区在线观看 | 久久视频一区 |