java里文件上传接口

一、文件上传工具类

package com.azxc.rapid.common.utils;

import org.apache.commons.lang.StringUtils;
import org.springblade.core.tool.utils.PathUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 文件上传
 */
public class UploadUtil {

	@Value("${PROJECT_INTERNET_URL}")
	private String PROJECT_INTERNET_URL;

	/**
	 * 文件上传
	 *
	 * @param
	 * @param fileDir 文件保存路径(在upload目录下的路径,如:fileDir=user/logo,则文件保存到项目的upload/user/logo目录中)
	 * @param fileType 文件类型,对应FileUtil中定义的文件类型(imgType,appType,textType,videoType,mediaType,compressedType,attachType(附件包含图片,视频,音频,文件,压缩文件))
	 * @return
	 */
	public static Map<String, Object> fileUpload(MultipartFile file, String	fileDir, String fileType) {
		Map<String, Object> jsonMap = new HashMap<String, Object>();
//		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//		MultipartFile file = multipartRequest.getFile("file");
		//保存
		if (file != null && StringUtils.isNotBlank(file.getOriginalFilename())) {
			//校验文件类型
			boolean check = true;
			if ("imgType".equals(fileType)) {
				check = FileUtil.isImage(file.getOriginalFilename());
			} else if ("appType".equals(fileType)) {
				check = FileUtil.isApp(file.getOriginalFilename());
			} else if ("textType".equals(fileType)) {
				check = FileUtil.isText(file.getOriginalFilename());
			} else if ("videoType".equals(fileType)) {
				check = FileUtil.isVideo(file.getOriginalFilename());
			} else if ("mediaType".equals(fileType)) {
				check = FileUtil.isMedia(file.getOriginalFilename());
			} else if ("compressedType".equals(fileType)) {
				check = FileUtil.isCompressed(file.getOriginalFilename());
			} else if ("attachType".equals(fileType)) {
				check = FileUtil.isAttach(file.getOriginalFilename());
			}
			if (check) {
				//上传文件后缀名称
				String extendName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
				String bannerId = UUID.randomUUID().toString();
				//新文件名称
				String newFileName = bannerId + extendName;
				//应用的真实路径
				//String realContextPath = request.getSession().getServletContext().getRealPath("/");
				String realContextPath = PathUtil.getJarPath() + "/";
				String relativePath = "upload/" + fileDir + "/" + DateUtils.parseDate(new Date(), "yyyyMMdd") + "/";
				System.out.println(realContextPath + relativePath);
				//新文件所属目录
				File destFile = new File(realContextPath + relativePath);
				if (!destFile.exists()) {
					destFile.mkdirs();
				}
				try {
					String fileUrl = relativePath + newFileName;
					String logoUrl = fileUrl;
					//新文件
					File normalFile = new File(destFile, newFileName);
					file.transferTo(normalFile);
					jsonMap.put("resCode", 0);
					jsonMap.put("resMsg", "文件上传成功");
					jsonMap.put("fileUrl", fileUrl);
					jsonMap.put("logoUrl", logoUrl);
				} catch (Exception e) {
					jsonMap.put("resCode", 1);
					jsonMap.put("resMsg", "文件上传失败");
					e.printStackTrace();
				}
			} else {
				jsonMap.put("resCode", 1);
				jsonMap.put("resMsg", "您上传的文件格式不正确");
			}
		} else {
			jsonMap.put("resCode", 1);
			jsonMap.put("resMsg", "未选择文件或文件名为空");
		}
		return jsonMap;
	}

	//链接url下载图片
	public static int downloadPicture(String urlList,String path) {
		URL url = null;
		try {
			url = new URL(urlList);
			DataInputStream dataInputStream = new DataInputStream(url.openStream());

			FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
			ByteArrayOutputStream output = new ByteArrayOutputStream();

			byte[] buffer = new byte[1024];
			int length;

			while ((length = dataInputStream.read(buffer)) > 0) {
				output.write(buffer, 0, length);
			}
			fileOutputStream.write(output.toByteArray());
			dataInputStream.close();
			fileOutputStream.close();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return 0;
	}
}

二、实现接口

/**
	 * 文件上传
	 *
	 * @param fileDir  文件保存路径(在upload目录下的路径,如:fileDir=user/logo,则文件保存到项目的upload/user/logo目录中)
	 * @param fileType 文件类型,对应FileUtil中定义的文件类型(imgType,appType,textType,videoType,mediaType,compressedType,attachType(附件包含图片,视频,音频,文件,压缩文件))
	 */
	@PostMapping(value = "/file/upload")
	public @ResponseBody
	Map<String, Object> upload(@RequestParam MultipartFile file) {
		String	fileDir="userPhotos";
		String fileType="imgType";
		return UploadUtil.fileUpload(file, fileDir, fileType);
	}

三、运行结果
在这里插入图片描述

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Java文件上传接口的实现,你可以按照以下步骤进行操作: 1. 创建一个接收文件上传请求的后端接口。你可以使用Java的Web框架(如Spring MVC)来创建一个处理文件上传的控制器。 2. 在接口中定义一个POST请求方法,用于接收文件。可以使用`@RequestParam`注解来获取文件参数。 3. 在方法体内,使用Java文件操作类(如`java.io.FileOutputStream`)来将文件保存到指定的位置。可以通过`transferTo()`方法将文件写入到磁盘上的文件。 例如: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { try { // 获取原始文件名 String fileName = file.getOriginalFilename(); // 指定文件保存路径 String filePath = "/path/to/save/" + fileName; // 创建文件输出 FileOutputStream fos = new FileOutputStream(filePath); // 将文件写入磁盘上的文件 file.transferTo(fos); fos.close(); return "File uploaded successfully!"; } catch (IOException e) { e.printStackTrace(); return "File upload failed!"; } } ``` 4. 在前端页面中,创建一个包含文件选择器的表单,并将表单的enctype属性设置为`multipart/form-data`,以支持文件上传。将表单的提交目标设置为后端接口的URL。 5. 当用户选择了要上传的文件后,将文件发送到后端接口进行处理。 以上是一个简单的Java文件上传接口的实现方式。根据实际需求,你可能还需要添加一些文件类型验证、文件大小限制等的逻辑来增强接口的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值