国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Springboot實現(xiàn)上傳文件,并實現(xiàn)調(diào)用第三方接口post請求多文件上傳文件

這篇具有很好參考價值的文章主要介紹了Springboot實現(xiàn)上傳文件,并實現(xiàn)調(diào)用第三方接口post請求多文件上傳文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

項目過程中,經(jīng)常會有和第三方接口打交道的過程,今天實現(xiàn)調(diào)用第三方上傳文件的接口??!
通常拿到第三方的接口文檔的時候,不是第一時間先寫代碼,而是詳細閱讀接口文檔。若接口需要第三方提供的基本參數(shù),例如signkey, secrect等,也可以是其他的,查看文檔里是否提供。再用工具(postman、swagger)構(gòu)建接口請求參數(shù)進行接口測試,測試成功后, 再開始寫代碼??!

問題說明

1、我們自己的封裝接口上傳文件類型為MultipartFile
2、上傳文件不是到我們服務(wù)器,而是到第三方接口上
3、使用hutool HttpRequest工具進行調(diào)用
4、直接傳入MultipartFile是不可用的

1、SpringBoot實現(xiàn)文件上傳-支持多文件

文件上傳,參數(shù)用MultipartFile類型接收
編寫contoller層接口
接口是post請求方式,參數(shù)用MultipartFile類型接收

    @ApiOperation(value = "多文件上傳")
    @PostMapping("/upload/file")
    public RtnResult<Object> uploadAttatchmentFile(MultipartFile[] file) {
        return mailService.uploadAttatchmentFile(file);
    }

編寫service層方法
邏輯:
a.先構(gòu)建請求URL
b. 按第三方接口文檔處理多文件上傳請求參數(shù),構(gòu)建HttpHeaders,HttpEntity
c.使用RestTemplate請求第三方接口
d.處理返回結(jié)果

    public RtnResult<Object> uploadAttatchmentFile(MultipartFile[] files) {
           String url = urlPrefix + UPLOAD_ATTACHMENT_FILE_URL;
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        for (MultipartFile file : files) {
            param.add("file", file.getResource());
        }
        RestTemplate request = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(param, headers);
        ResponseEntity<Map> response = request.postForEntity(url, requestEntity, Map.class);
        if (response.getStatusCode() != HttpStatus.OK) {
           return  (RtnResult.errorCodeMsg.SERVER_ERROR);
        }
        Map result  = response.getBody();
        return RtnResult.success(result);
    }

2、調(diào)用第三方接口post請求多文件上傳文件

上傳調(diào)用代碼
注意:transferToFile()這個方法時最主要的,我們需要轉(zhuǎn)換File類型進行第三方上傳

public R uploadByte(String attachType, MultipartFile file) {
    File toFile = transferToFile(file);
    Map data = new HashMap();
    data.put("file", toFile);
    data.put("attachType", attachType);
    String body = HttpRequest.post("第三方url")
            .form(data)
            .contentType("multipart/form-data")
            .execute()
            .body();
    Map result = new HashMap();
    if (StrUtil.isNotBlank(body)) {
        result = JSON.parseObject(body, Map.class);
    }
    return R.ok().put("data", result);
}

MultipartFile 轉(zhuǎn) File(第一種方法)

public File transferToFile(MultipartFile multipartFile) {
    //選擇用緩沖區(qū)來實現(xiàn)這個轉(zhuǎn)換即使用java 創(chuàng)建的臨時文件 使用 MultipartFile.transferto()方法 。
    File file = null;
    try {
        String originalFilename = multipartFile.getOriginalFilename();
        //獲取文件后綴
        String prefix = originalFilename.substring(originalFilename.lastIndexOf("."));
        file = File.createTempFile(originalFilename, prefix);    //創(chuàng)建零食文件
        multipartFile.transferTo(file);
        //刪除
        file.deleteOnExit();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return file;
}

MultipartFile 轉(zhuǎn) File(第二種方法)

/**
	 * MultipartFile 轉(zhuǎn) File
	 *
	 * @param file
	 * @throws Exception
	 */
	public static File multipartFileToFile(MultipartFile file) throws Exception {

		File toFile = null;
		if (file.equals("") || file.getSize() <= 0) {
			file = null;
		} else {
			InputStream ins = null;
			ins = file.getInputStream();
			toFile = new File(file.getOriginalFilename());
			inputStreamToFile(ins, toFile);
			ins.close();
		}
		return toFile;
	}

	//獲取流文件
	private static void inputStreamToFile(InputStream ins, File file) {
		try {
			OutputStream os = new FileOutputStream(file);
			int bytesRead = 0;
			byte[] buffer = new byte[8192];
			while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
				os.write(buffer, 0, bytesRead);
			}
			os.close();
			ins.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

通過上述操作、測試,成功調(diào)用第三方上傳文件接口?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-597524.html

到了這里,關(guān)于Springboot實現(xiàn)上傳文件,并實現(xiàn)調(diào)用第三方接口post請求多文件上傳文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot中 如何優(yōu)雅的 重試調(diào)用 第三方API?

    SpringBoot中 如何優(yōu)雅的 重試調(diào)用 第三方API?

    引言 在實際的應(yīng)用中,我們經(jīng)常需要調(diào)用第三方API來獲取數(shù)據(jù)或執(zhí)行某些操作。然而,由于網(wǎng)絡(luò)不穩(wěn)定、第三方服務(wù)異常等原因,API調(diào)用可能會失敗。為了提高系統(tǒng)的穩(wěn)定性和可靠性,我們通常會考慮實現(xiàn)重試機制。 本文將深入探討如何在Spring Boot項目中優(yōu)雅地重試調(diào)用第三

    2024年01月21日
    瀏覽(32)
  • 詳解SpringBoot中如何優(yōu)雅地重試調(diào)用第三方API?

    作為后端程序員,我們的日常工作就是調(diào)用一些第三方服務(wù),將數(shù)據(jù)存入數(shù)據(jù)庫,返回信息給前端。但你不能保證所有的事情一直都很順利。像有些第三方API,偶爾會出現(xiàn)超時。此時,我們要重試幾次,這取決于你的重試策略。 下面舉一個我在日常開發(fā)中多次看到的例子:

    2024年02月02日
    瀏覽(38)
  • 【Springboot系列】Springboot系列-調(diào)用第三方接口的五種方式匯總,代碼實例

    在開發(fā)中,經(jīng)常需要調(diào)用第三方接口或者其他的應(yīng)用接口來完成業(yè)務(wù)需求。今天分享下Spring Boot中調(diào)用第三方接口的多種方式。 1、使用OpenFeign進行調(diào)用(推薦) 2、使用原始httpClient請求 3、使用RestTemplate方法 4、使用hutool.httputil 5、使用OkHttp3 Feign是一個聲明式的Web Service客戶端

    2024年02月11日
    瀏覽(26)
  • SpringBoot打包成WAR包的時候把第三方j(luò)ar包打到LIB文件夾下和把第三方j(luò)ar包打入到SpringBoot jar包中

    SpringBoot打包成WAR包的時候把第三方j(luò)ar包打到LIB文件夾下和把第三方j(luò)ar包打入到SpringBoot jar包中

    轉(zhuǎn)載 首先我們應(yīng)該知道我們把 SPRINGBOOT 項目打包成WAR包和JAR包的時候分別需要何種插件 我們最常用的把 springBoot 打成jar包的插件是下面這樣的一個插件,這是把我們的 springBoot 項目打包成為一個可執(zhí)行 jar 的插件 把 springBoot 項目打包成一個war包的插件是下面這樣的一個插件

    2024年02月07日
    瀏覽(24)
  • 從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調(diào)用

    從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調(diào)用

    ????????相信大家對這個詞匯并不陌生,通俗來說API就是程序之間的接口,在學(xué)習(xí)和工作中經(jīng)常會調(diào)用別人的API,那么如果我們要做一個自己的API,要如何下手呢。本文將用Spring+JAVA編寫一個簡單的API,過程可供初學(xué)者參考。 ? ? ? ? 為了顧及完全沒有經(jīng)驗的小白(比如我

    2024年02月10日
    瀏覽(20)
  • Vue+element Upload利用http-request實現(xiàn)第三方地址圖片上傳

    Vue+element Upload利用http-request實現(xiàn)第三方地址圖片上傳

    Vue + element (el-upload)中的 :http-request 圖片上傳 java后端上傳接口,利用 OSS 存儲圖片 postman測試 圖片上傳功能及方法 對比: 服務(wù)端簽名后直傳 使用element UI 的el-upload實現(xiàn)第三方地址圖片上傳,替換原來的action方法 直接上傳方法如下:上傳圖片根據(jù)action地址請求后獲取到圖片u

    2023年04月26日
    瀏覽(19)
  • node 第十四天 基于express的第三方中間件multer node后端處理用戶上傳文件

    Multer 是一個 node.js 中間件,用于處理 multipart/form-data 類型的表單數(shù)據(jù),它主要用于上傳文件。它是寫在 busboy 之上的所以非常高效。 前面我們已經(jīng)知道了怎樣利用express提供的靜態(tài)資源處理中間件 express.static() 處理用戶請求靜態(tài)資源文件(圖片, js, css等) 接下來學(xué)習(xí)如何處理用

    2024年02月06日
    瀏覽(23)
  • 基于ETLCloud的自定義規(guī)則調(diào)用第三方j(luò)ar包實現(xiàn)繁體中文轉(zhuǎn)為簡體中文

    基于ETLCloud的自定義規(guī)則調(diào)用第三方j(luò)ar包實現(xiàn)繁體中文轉(zhuǎn)為簡體中文

    前面曾體驗過通過零代碼、可視化、拖拉拽的方式快速完成了從 MySQL 到 ClickHouse 的數(shù)據(jù)遷移,但是在實際生產(chǎn)環(huán)境,我們在遷移到目標庫之前還需要做一些過濾和轉(zhuǎn)換工作;比如,在詩詞數(shù)據(jù)遷移后,發(fā)現(xiàn)原來 MySQL 中的詩詞數(shù)據(jù)都是繁體字,這就導(dǎo)致在直接遷移到 ClickHous

    2024年02月11日
    瀏覽(21)
  • 基于opencv第三方視覺庫,通過內(nèi)網(wǎng)IP調(diào)用手機攝像頭,實現(xiàn)人臉識別與圖形監(jiān)測

    基于opencv第三方視覺庫,通過內(nèi)網(wǎng)IP調(diào)用手機攝像頭,實現(xiàn)人臉識別與圖形監(jiān)測

    OpenCV 是一個開源的計算機視覺庫,OpenCV 庫用C語言和 C++ 語言編寫,可以在 Windows、Linux、Mac OS X 等系統(tǒng)運行。同時也在積極開發(fā) Python、Java、Matlab 以及其他一些語言的接口,將庫導(dǎo)入安卓和 iOS 中為移動設(shè)備開發(fā)應(yīng)用。 OpenCV 庫包含從計算機視覺各個領(lǐng)域衍生出來的 500 多個函

    2024年02月09日
    瀏覽(31)
  • java通過httpclient攜帶請求頭參數(shù)獲取第三方文件流接口并實現(xiàn)實現(xiàn)文件下載

    創(chuàng)建httpclient 請求,并在header攜帶指定key,也可根據(jù)實際需要攜帶token等信息。獲取第三方接口返回的文件輸入流并寫到本地response中,實現(xiàn)返回文件流,前端通過js的a標簽進行下載。 代碼如下: 前端js代碼

    2024年02月16日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包