file.getOriginalFilename为什么获取的值为空
时间: 2023-05-23 12:07:00 浏览: 1563
A:file.getOriginalFilename获取的是上传文件的原始文件名,但是如果上传的文件没有文件名或者文件名不合法,该方法会返回空值。还有可能是上传的文件并没有成功被接受,也会导致该方法返回空值。因此,可以先判断上传的文件是否为空,再调用该方法获取文件名。此外,还需要检查上传的文件格式是否合法。
相关问题
@ResponseBody public GlobalResult uploadFile(MultipartFile file, HttpServletRequest request) { if (file == null) { return GlobalResult.errorMsg("文件不能为空!"); } String fileSub = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase(); //if (".jpg".equals(fileSub) || ".jpeg".equals(fileSub) || ".png".equals(fileSub) || ".gif".equals(fileSub)) {请详细解释每一行代码
这段代码是一个 Spring Boot 控制器(Controller)中的一个方法。该方法使用注解 @ResponseBody 表示返回的结果是一个响应体,而不是跳转到一个页面。
方法签名:
```java
public GlobalResult uploadFile(MultipartFile file, HttpServletRequest request)
```
该方法接受两个参数,一个是 MultipartFile 类型的文件对象,另一个是 HttpServletRequest 类型的请求对象。
接下来是方法体:
```java
if (file == null) {
return GlobalResult.errorMsg("文件不能为空!");
}
```
这里判断了文件对象是否为空,如果为空则返回一个错误信息。
```java
String fileSub = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();
```
这里获取上传文件的后缀名,并将其转换为小写字母。例如,如果上传的文件名为 "myImage.JPG",那么 fileSub 的值将为 ".jpg"。
```java
//if (".jpg".equals(fileSub) || ".jpeg".equals(fileSub) || ".png".equals(fileSub) || ".gif".equals(fileSub)) {
```
这行代码是注释掉的,它的作用是判断上传文件的类型是否符合要求。这里的判断条件是只允许上传 .jpg、.jpeg、.png、.gif 四种类型的文件。如果文件类型不符合要求,那么可以返回一个错误提示。
最后,这个方法应该返回一个 GlobalResult 对象,表示上传文件的结果。具体返回什么样的结果,需要根据业务需求来定。
@Override public ScanFileVo upload(MultipartFile file, String bizPath){ String savePath = ""; if(oConvertUtils.isEmpty(bizPath)){ if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){ //未指定目录,则用阿里云默认目录 upload bizPath = "upload"; }else{ bizPath = ""; } } savePath = CommonUtils.upload(file, bizPath, uploadType); if(oConvertUtils.isNotEmpty(savePath)){ OSSFile ossFile = new OSSFile(); ossFile.setFileName(file.getOriginalFilename()); ossFile.setUrl(savePath); ossFileService.save(ossFile); return ScanFileVo.builder() .fileUrl(savePath) .scanName(file.getOriginalFilename()) .ossFile(ossFile) .build(); } return null; }解析一下这段代码
这段代码是一个Java方法,接受一个MultipartFile类型的文件和一个字符串类型的bizPath作为参数,并返回一个ScanFileVo类型的对象。
方法首先对bizPath进行判断,如果为null或空,则根据uploadType的值来判断使用默认目录"upload"或空目录。接着调用CommonUtils的upload方法,将文件保存到指定的目录下,并返回保存后的文件路径。
如果保存成功,则创建一个OSSFile对象,设置文件名和保存路径,将该对象保存到数据库中,并构建一个ScanFileVo对象,包含保存后的文件路径、文件名和OSSFile对象,并返回该对象;否则返回null。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)