无法使用 MongoDb GridFs 上传文件
Could not Upload File using MongoDb GridFs
我是 Spring-Boot 的新手,我正在尝试将文件上传到 Mongodb 数据库,将其 objectId 和 link 保存到我的文档中,以便稍后下载。
这是我的 class 人:
@Document
public class Person {
@Id
private String id;
private String firstName;
private String lastName;
private String age;
private String filename;
private ObjectId file;
....}
这是我的控制器方法:
@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/" 之后,我将文件上传到服务器,然后将其传输到目录。这是我的控制器方法:
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 方法,您可以在 link 中找到它:
How to reference GridFSFile with @DbRef annotation (spring data mongodb)
我是 Spring-Boot 的新手,我正在尝试将文件上传到 Mongodb 数据库,将其 objectId 和 link 保存到我的文档中,以便稍后下载。 这是我的 class 人:
@Document
public class Person {
@Id
private String id;
private String firstName;
private String lastName;
private String age;
private String filename;
private ObjectId file;
....}
这是我的控制器方法:
@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/" 之后,我将文件上传到服务器,然后将其传输到目录。这是我的控制器方法:
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 方法,您可以在 link 中找到它: How to reference GridFSFile with @DbRef annotation (spring data mongodb)