为什么我从数据库中获取的数据为null,然后判断数据是不是为空采取两种措施但是却判断不了,请问是什么问题了。
package com.example.springboot.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.Files;
import com.example.springboot.entity.User;
import com.example.springboot.mapper.FilesMapper;
import com.example.springboot.utils.TokenUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//用来上传文件
@RestController
@RequestMapping("/file")
public class FileController {
@Value("${files.upload.path}")
private String filepath;
@Resource
private FilesMapper fileMapper;
@PostMapping("/upload")
public String upload(@RequestParam MultipartFile file) throws IOException {
String originalFilename= file.getOriginalFilename();//获取文件原始名称
String type= FileUtil.extName(originalFilename);//获取文件类型
long size=file.getSize();
//先存储到磁盘
File file1 = new File(filepath);
if (!file1.exists()){
file1.mkdirs();//判断配置文件中的路径是否存在不存在重新创建路径
}
String uid= IdUtil.fastUUID();//创建文件标识位
String uuid=uid+ StrUtil.DOT+type;
String url="http://localhost:9090/file/"+uuid;
String md5= SecureUtil.md5(file.getInputStream());//获取唯一标识符md5,用来判断上传文件是否重复以防止上传同一文件节省空间
File file2= new File(filepath+uuid);
Files files= getFilebyMd5(md5);
Files saveFile= new Files();
String name=files.getName();
if (files.getId()!=null)//当不文件存在时
{url=files.getUrl();
int compare=StrUtil.compareIgnoreCase(name,originalFilename,false);
if (compare!=0)//当要上传的文件名和数据库里的文件名不一样但md5相同时只存数据不上传到磁盘
{saveFile.setName(originalFilename);
saveFile.setType(type);
saveFile.setSize(size/1024);
saveFile.setUrl(url);
saveFile.setMd5(md5);
fileMapper.insert(saveFile);
return url;
}
else{
return url;
}
}else {
//上传文件到磁盘,并上传信息到数据库
file.transferTo(file2);
System.out.println("傻逼");
url = "http://localhost:9090/file/" + uuid;
saveFile.setName(originalFilename);
saveFile.setType(type);
saveFile.setSize(size / 1024);
saveFile.setUrl(url);
saveFile.setMd5(md5);
fileMapper.insert(saveFile);
return url;
}
//将文件存储到数据库中
}}
错误是:
2023-03-25 20:47:53.528 ERROR 11656 --- [nio-9090-exec-1] org.apache.tomcat.util.net.NioEndpoint : Error running socket processor
java.io.UncheckedIOException: Cannot delete C:\Users\win10\AppData\Local\Temp\tomcat.9090.7183718003577890731\work\Tomcat\localhost\ROOT\upload_92b1a133_eb2f_4895_bb84_4ad5ee4171a1_00000000.tmp
at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:539) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1439) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:1098) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1056) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-embed-core-9.0.71.jar:9.0.71]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.71.jar:9.0.71]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_301]
Caused by: java.io.IOException: Cannot delete C:\Users\win10\AppData\Local\Temp\tomcat.9090.7183718003577890731\work\Tomcat\localhost\ROOT\upload_92b1a133_eb2f_4895_bb84_4ad5ee4171a1_00000000.tmp
... 14 common frames omitted