为什么用asp做网站,网站制作排版注意事项,聊城定制网站建设公司,怎么制作软件平台文章目录 一、上传文件1、前端上传文件给Java接口2、Java接口上传文件给Java接口 二、下载文件1、前端调用Java接口下载文件2、Java接口下载网络文件到本地3、前端调用Java接口下载网络文件 一、上传文件
1、前端上传文件给Java接口
Controller接口 此接口支持上传单个文件和… 文章目录 一、上传文件1、前端上传文件给Java接口2、Java接口上传文件给Java接口 二、下载文件1、前端调用Java接口下载文件2、Java接口下载网络文件到本地3、前端调用Java接口下载网络文件 一、上传文件
1、前端上传文件给Java接口
Controller接口 此接口支持上传单个文件和多个文件并保存在本地 import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;/*** 文件上传测试*/
Slf4j
RestController
public class FileTestController {/*** MultipartFile 自动封装上传过来的文件* param headerImg* param photos* return*/PostMapping(/upload)public String upload(RequestPart(headerImg) MultipartFile headerImg,RequestPart(photos) MultipartFile[] photos) throws IOException {log.info(上传的信息headerImg{}photos{},headerImg.getSize(),photos.length);if(!headerImg.isEmpty()){//保存到文件服务器OSS服务器String originalFilename headerImg.getOriginalFilename();headerImg.transferTo(new File(E:\\workspace\\boot-05-web-01\\headerImg\\originalFilename));}if(photos.length 0){for (MultipartFile photo : photos) {if(!photo.isEmpty()){String originalFilename photo.getOriginalFilename();photo.transferTo(new File(E:\\workspace\\boot-05-web-01\\photos\\originalFilename));}}}return OK;}}yaml配置
spring:servlet:multipart:max-file-size: 10MB 单个文件最大值max-request-size: 100MB 单次请求上传文件最大值file-size-threshold: 4KB 内存中IO流满4KB就开始写入磁盘Postman调用传参
2、Java接口上传文件给Java接口
我这里是将前端接收过来的文件转发到另外一个接口也就是一种上传操作。 如果你要将本地文件上传过去那么修改下代码读取本地文件格式转化一下即可。
RestTemplateConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;Configuration
public class RestTemplateConfig {Beanpublic RestTemplate restTemplate(){return new RestTemplate();}}Java转发文件接口 PostMapping(/upload)public String upload(RequestPart(headerImg) MultipartFile headerImg,RequestPart(photos) MultipartFile[] photos) throws IOException {log.info(上传的信息headerImg{}photos{},headerImg.getSize(),photos.length);String urlhttp://127.0.0.1:8080//upload2;//封装请求头HttpHeaders httpHeaders new HttpHeaders();httpHeaders.set(Content-Type, MediaType.MULTIPART_FORM_DATA_VALUE ;charsetUTF-8);httpHeaders.set(test1, 1);httpHeaders.set(test2, 2);MultiValueMapString, Object form new LinkedMultiValueMap();//文件处理FileSystemResource headerImgFile new FileSystemResource(multipartFile2File(headerImg));form.add(headerImg, headerImgFile);FileSystemResource[] photosArr new FileSystemResource[photos.length];for (int i 0; i photos.length; i) {photosArr[i] new FileSystemResource(multipartFile2File(photos[i]));form.add(photos, photosArr[i]);}HttpEntityMultiValueMapString, Object files new HttpEntity(form, httpHeaders);RestTemplate restTemplate new RestTemplate();//发送请求String result restTemplate.postForObject(url, files,String.class);return result;}private static File multipartFile2File(NonNull MultipartFile multipartFile) {// 获取文件名String fileName multipartFile.getOriginalFilename();// 获取文件前缀String prefix fileName.substring(0, fileName.lastIndexOf(.));//获取文件后缀String suffix fileName.substring(fileName.lastIndexOf(.));try {//生成临时文件//文件名字必须大于3否则报错File file File.createTempFile(prefix, suffix);//将原文件转换成新建的临时文件multipartFile.transferTo(file);file.deleteOnExit();return file;} catch (Exception e) {e.printStackTrace();}return null;}Java接收文件接口 PostMapping(/upload2)public String upload2(RequestPart(headerImg) MultipartFile headerImg,RequestPart(photos) MultipartFile[] photos) throws IOException {if(!headerImg.isEmpty()){//保存到文件服务器OSS服务器String originalFilename headerImg.getOriginalFilename();headerImg.transferTo(new File(E:\\workspace\\boot-05-web-01\\headerImg\\originalFilename));}if(photos.length 0){for (MultipartFile photo : photos) {if(!photo.isEmpty()){String originalFilename photo.getOriginalFilename();photo.transferTo(new File(E:\\workspace\\boot-05-web-01\\photos\\originalFilename));}}}return upload2 OK;}二、下载文件
1、前端调用Java接口下载文件
Controller
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;Slf4j
RestController
public class FileTestController {private static final String FILE_DIRECTORY E:\\workspace\\boot-05-web-01\\photos;GetMapping(/files/{fileName:.})public ResponseEntityResource downloadFile(PathVariable String fileName) throws IOException {Path filePath Paths.get(FILE_DIRECTORY).resolve(fileName).normalize();Resource resource new FileUrlResource(String.valueOf(filePath));if (!resource.exists()) {throw new FileNotFoundException(File not found fileName);}// 设置下载文件的响应头HttpHeaders headers new HttpHeaders();headers.add(HttpHeaders.CONTENT_DISPOSITION, attachment; filename\ fileName \);return ResponseEntity.ok().headers(headers).body(resource);}}测试方法 浏览器直接发送get请求即可 http://127.0.0.1:8080/files/andriod1749898216865912222.jpg
2、Java接口下载网络文件到本地
Controller GetMapping(/downloadNetFileToLocal)public Object downloadNetFileToLocal(RequestParam(url) String fileUrl) throws Exception {JSONObject result new JSONObject();String fileName fileUrl.split(/)[fileUrl.split(/).length-1];URL url new URL(fileUrl);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(GET);connection.setConnectTimeout(5000);InputStream inputStream connection.getInputStream();FileOutputStream fileOutputStream new FileOutputStream(E:\\workspace\\boot-05-web-01\\photos\\fileName);byte[] buffer new byte[1024];int byteread;int bytesum 0;while ((byteread inputStream.read(buffer)) ! -1){bytesum byteread;fileOutputStream.write(buffer,0,byteread);}fileOutputStream.close();result.put(bytes,bytesum);result.put(code,200);return result.toString();}测试地址 http://127.0.0.1:8080/downloadNetFileToLocal?urlhttps://img-blog.csdnimg.cn/166e183e84094c44bbc8ad66500cef5b.jpeg
3、前端调用Java接口下载网络文件 GetMapping(/downloadNetFile)public ResponseEntity? downloadNetFile(RequestParam(url) String fileUrl) throws Exception {String fileName fileUrl.split(/)[fileUrl.split(/).length-1];URL url new URL(fileUrl);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(GET);connection.setConnectTimeout(5000);InputStream inputStream connection.getInputStream();byte[] bytes streamToByteArray(inputStream);HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);headers.setContentLength(bytes.length);headers.setContentDispositionFormData(attachment, fileName);return new ResponseEntity(bytes, headers, HttpStatus.OK);}/*** 功能将输入流转换成 byte[]** param is* return* throws Exception*/public static byte[] streamToByteArray(InputStream is) throws Exception {ByteArrayOutputStream bos new ByteArrayOutputStream();//创建输出流对象byte[] b new byte[1024];int len;while ((len is.read(b)) ! -1) {bos.write(b, 0, len);}byte[] array bos.toByteArray();bos.close();return array;}测试地址http://127.0.0.1:8080/downloadNetFile?urlhttps://img-blog.csdnimg.cn/166e183e84094c44bbc8ad66500cef5b.jpeg