IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【java从网络外链接下载文件并回传到其他网络服务器】 -> 正文阅读

[系统运维]【java从网络外链接下载文件并回传到其他网络服务器】

场景

描述

从网络地址1下文件,然后将文件上传给网络地址2

举例

该地址为一个接收文件上传的接口

解决方案

将网络地址1上的文件下载到本地,然后再上传至网络地址2.
在这里插入图片描述

准备

package com.xl.test.logtest.controller;

import java.util.UUID;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/file")
public class FileuploadController {
	
	@PostMapping("/upload")
	public String uploadFile(@RequestParam("file") MultipartFile file) {
		System.out.println("===================file.name======================"+file.getName());
		System.out.println("===================file.size======================"+file.getSize());
		return UUID.randomUUID().toString();
	}
	
}

例子

package com.xl.test.json;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

public class RemoteFileTest {
	

	public static void main(String[] args) throws IOException {
		String sourcePath = "https://cj.jj20.com/2020/down.html?picurl=/up/allimg/1111/0Q91Q50307/1PQ9150307-7.jpg";
		String localTempPath = "E:\\localtempfile\\";
		String destinationPath = "http://47.97.154.171:8080/file/upload";
		URL url = new URL(sourcePath);
		URLConnection connection = url.openConnection();
		InputStream inputStream = connection.getInputStream();
		File dir = new File(localTempPath);
		if (!dir.exists()) {
			dir.mkdirs();
		}
		File file = new File(localTempPath+"test.jpg");
		FileOutputStream outputStream = new FileOutputStream(file);
		IOUtils.copy(inputStream, outputStream);
		// 通过指定header和body来创建HttpEntity
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.MULTIPART_FORM_DATA);

		MultiValueMap<String, Object> body = new LinkedMultiValueMap<String, Object>();
		// FileSystemResource有多个构造返方法
		body.add("file", new FileSystemResource(file)); // file值为文件服务器上传接口的参数
		HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(body, headers);

		// 调用template.postForEntity( )完成连接建立并发送文件到服务器
		
		RestTemplate template = getTemplate();
		
		ResponseEntity<String> response = template.postForEntity(destinationPath, requestEntity, String.class);
		String data = response.getBody();
		System.out.println("目标地址(上传接口)返回的数据data = "+data);
		// 删除locationPath中的临时文件 ,删除前先关闭流
		inputStream.close();
		outputStream.close();
	}
	
	private static RestTemplate getTemplate() {
		SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
		factory.setReadTimeout(180000);//单位为ms
		factory.setConnectTimeout(5000);
		RestTemplate template = new RestTemplate(factory);
		return template;
	}
	

}

说明,如果是springboot项目

  • 生成 RestTemplate 实例使用@Bean注解方式,如下:
@Bean
	public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
		return new RestTemplate(factory);
	}
 
	@Bean
	public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
		SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
		factory.setReadTimeout(180000);
		factory.setConnectTimeout(5000);
		return factory;
	}
  • 使用RestTemplate 实例,直接使用@Autowired注解,如
@Autowired
	private RestTemplate template;

测试

直接运行main方法即可
在这里插入图片描述
在网络地址2查看文件接收情况
在这里插入图片描述

其他更细粒度实现的文件上传至远程(网络)服务器例子

java上传文件到远程服务器(一)—HttpURLConnection方式

java上传文件到远程服务器(二)—HttpClient方式

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:54:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:22:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码