java写上传 文件到服务器 参数为 MultipartFile file 返回服务器上文件地址 再写一个方法获取此文件作数据解析 入参为服务器上文件地址
时间: 2024-09-06 15:06:30 浏览: 48
Java原生服务器接收上传文件 不使用MultipartFile类
在Java中,你可以使用Spring MVC框架处理文件上传,并将上传的MultipartFile对象传递给后端服务。下面是一个简单的示例:
首先,创建一个控制器方法接收上传的文件并将其保存到服务器:
```java
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
throw new IllegalArgumentException("File is empty");
}
// 检查文件是否有效,例如检查文件类型
if (!allowedFileTypes.contains(file.getOriginalFilename().toLowerCase())) {
return "Invalid file type";
}
// 将文件保存到服务器指定路径
String fileName = UUID.randomUUID().toString() + "." + file.getOriginalFilename();
File targetFile = new File(savePath + fileName);
file.transferTo(targetFile);
// 返回保存后的文件路径
return "/files/" + fileName; // 这里假设savePath是服务器上的实际存储路径,如"/uploads/"
}
private static final List<String> allowedFileTypes = Arrays.asList("jpg", "png", "jpeg"); // 设置允许的文件类型
private static final String savePath = "/uploads/"; // 服务器文件保存路径
}
```
接下来,创建另一个方法用于从已保存的文件地址读取数据并进行解析:
```java
import org.springframework.stereotype.Service;
import org.springframework.core.io.InputStreamResource;
@Service
public class FileService {
public String parseFile(String filePath) {
try {
// 使用InputStreamResource从服务器路径加载文件内容
InputStreamResource inputStreamResource = new InputStreamResource(new FileInputStream(filePath));
// 进行数据解析,这里只是一个简单示例,真实场景下可能需要使用专门的解析库,比如JSON、XML等
String data = new Scanner(inputStreamResource.getInputStream(), "UTF-8").useDelimiter("\\A").next();
return data;
} catch (IOException e) {
throw new RuntimeException("Failed to read file from server", e);
}
}
}
```
阅读全文