gpt4 book ai didi

java - Spring Boot MultipartFile上传getOriginalFileName根据浏览器不同而不同

转载 作者:行者123 更新时间:2023-11-29 10:33:10 27 4
gpt4 key购买 nike

我使用的是 spring boot 1.5.7-RELEASE 版本,我使用以下方法上传文件:

@Autowired private MyService mySerice;

@RequestMapping(value = "/uploadFile", method = { RequestMethod.POST }, produces = { MediaType.MULTIPART_FORM_DATA_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.APPLICATION_JSON_VALUE })
public void upload(@RequestParam("file") MultipartFile uis, @RequestParam("user_id") String userId) {
MyFile myFile = new MyFile();
if (!uis.isEmpty()) {
myFile.setFile(uis.getBytes());
myFile.setName(uis.getOriginalFilename());
myFile.setUserId(userId);
myService.upload(myFile);
}
}

我正在尝试将此文件上传到 MySQL 中的此表:

CREATE TABLE `file_user` (
`id` int(5) UNSIGNED NOT NULL,
`user_id` bigint(20) UNSIGNED NOT NULL,
`file` mediumblob NOT NULL,
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `file_user` ADD PRIMARY KEY (`id`);

前端是一个带有 Ajax 的简单表单 HTML。

var fileInput = $("#file_form_post")[0].files[0];
var data = new FormData();
data.append("file", fileInput);
data.append("user_id", $("#txt_uid").val());
$.ajax({
url: 'mypage.com:9002/uploadFile',
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false,
headers: {Accept: "application/json"},
success: function (r) {
alert('Upload OK');
},
error: function (request, status, error) {
alert('Upload error');
}
});

当我从 Internet Explorer 或 Microsoft Edge 上传文件时,方法 uis.getOriginalFilename() 返回完整路径。

例如:c:\users\daniel\myfile.txt

如果我从 Google Chrome 上传文件,则 uis.getOriginalFileName() 的值只是文件名。

例如:myfile.txt

如何获取每个浏览器的名称而没有路径?

是否缺少一些 @Bean 来实现这一点?

谢谢。

最佳答案

使用apache commons IO。它处理 Unix 或 Windows 格式的文件。

org.apache.commons.io.FilenameUtils.getName(multipartFile.getOriginalFilename());

关于java - Spring Boot MultipartFile上传getOriginalFileName根据浏览器不同而不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46992498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com