王座 2023-03-25 20:53 采纳率: 100%
浏览 45
已结题

为什么我从数据库获取的数据为null?

为什么我从数据库中获取的数据为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



  • 写回答

2条回答 默认 最新

  • 关注

    你别放C盘,C盘是系统盘,容易遇到权限问题。
    另外你文件如果不存在的话,你那个53行getFilebyMd5返回的files不是null?如果对象是null的话,你判断id没用,会出现空指针
    if (files.getId()!=null)
    上面这句你改成 if (files!=null)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效