java - 无法使用 MongoDb GridFs 上传文件

标签 java mongodb spring-mvc spring-boot gridfs

我是 Spring-Boot 新手,我正在尝试将文件上传到 Mongodb 数据库,保存其 objectId 并将其链接到我的文档,以便稍后下载。 这是我的类(class)人员:

@Document
public class Person {
@Id
private String id;

private String firstName;
private String lastName;
private String age;
private String filename;
private ObjectId file;
 ....}

这是我的 Controller 方法:

@RequestMapping(value="/addperson",method=RequestMethod.POST)
public String ajout(Model model,@Valid PersonForm pf){

    Person p=new Person(pf.getFirstname(),pf.getLastName(),pf.getAge());
    InputStream inputStream=null;
    try {
        inputStream = new FileInputStream("E:/usb/");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    p.setFilename(pf.getFilename());
    repository.linkFileToMyDoc(p,inputStream,p.getFilename());
    repository.save(p);
    model.addAttribute("PersonForm",pf);
    return "personview";
}

我想知道这是否是最好的方法。 我得到的错误是对“E:/usb/”的访问被拒绝。 有谁可以帮忙吗

最佳答案

我在阅读 MultipartFile 文档后找到了解决方案。我将文件上传到服务器,然后将其传输到目录,在允许完全控制目录“E:/usb/”之后。这是我的 Controller 方法:

   Person p=new Person(pf.getFirstname(),pf.getLastName(),pf.getAge());


    try {
        File dest = null;
        String str = "C:/tt/"+pf.getFile().getOriginalFilename();
        File dir = new File(str);
        dir.createNewFile();
        pf.getFile().transferTo(dir);
        p.setFilename(str);
        InputStream inputStream=pf.getFile().getInputStream();
         repository.linkFileToMyDoc(p,inputStream,pf.getFile().getOriginalFilename());
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    repository.save(p);
    model.addAttribute("PersonForm",pf);
    return "personview";
}

linkFileToMydoc 方法,您可以在此链接中找到它: How to reference GridFSFile with @DbRef annotation (spring data mongodb)

关于java - 无法使用 MongoDb GridFs 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530937/

相关文章:

java - 为 OPTIONS Http 方法禁用 Spring Security

java - Struts 2 应用程序在通过管理控制台部署时出错

java - 如何创建二维集合?

java - JAX-WS 响应消息中的可选部分

mongodb - 如何将键值对添加到MongoDB中的对象

java - Jackson 忽略抽象类的 xml 根元素

spring-mvc - Emberjs 无法正确接受来自 spring mvc 的数组

java - 是否可以在运行时更改 Spring Boot 中 property.file 内的特定值?

MongoDB 聚合 : $lookup by _id, 然后获取第一个元素值

MongoDB - 使用聚合框架或 mapreduce 匹配文档中的字符串数组(配置文件匹配)