首页 新闻 会员 周边 捐助

上传文件遇到问题 麻烦各位高手给予解答下 非常感谢

0
悬赏园豆:5 [待解决问题]

@Controller
public class UploadController {

@RequestMapping("upload.do")
@ResponseBody
public String upload(@RequestParam("file")MultipartFile file) throws IllegalStateException, IOException {
System.out.println(file.getOriginalFilename());
File dest=new File("d:/2.jpg");
file.transferTo(dest);
return "ok";

}
}

如上面一段代码是集成springmvc 这里我遇到个问题,File dest=new File("d:/2.jpg"); 本身不能在物理路径创建文件,需要使用 file.createNewFile() 才可以创建物理路径真实文件,而file.transferTo(dest); 这个方法的作用是 把上传文件的数据保存到硬盘的另一个文件上面,因此我做了一个实验 我在硬盘创一个d:/2.jpg,不过创建的图片文件没有数据,就只是个空白文件,这时我执行 File dest=new File("d:/2.jpg") file.transferTo(dest); 这两个方法后发现 d:/2.jpg 里面的图片文件有数据,并且能够打开,这个实验我能理解,但是下面的实验我就不明白了,我把d:/2.jpg 这个文件删了,硬盘没有真实的d:/2.jpg文件了,这时执行File dest=new File("d:/2.jpg") file.transferTo(dest); 这两个方法后发现 d:/2.jpg 这个文件在硬盘真实被创建出来了,而且能够打开是个图片,这点我就不理解了 因为 File dest=new File("d:/2.jpg") 这段代码不能真实创建文件, file.transferTo(dest); 这个也没有创建文件的功能,但是执行了dest=new File("d:/2.jpg") file.transferTo(dest); 这两个方法 为什么就能在硬盘真实存在d:/2.jpg 这个文件了呢?麻烦各位高手 告诉我下 非常感谢。

懒散の小青年的主页 懒散の小青年 | 初学一级 | 园豆:195
提问于:2020-01-06 16:38
< >
分享
所有回答(2)
0

看源码找答案啊,你在这问回答的人还不是得给你看源码

猝不及防 | 园豆:2836 (老鸟四级) | 2020-01-06 16:59

另外其实不要纠结这些

支持(0) 反对(0) 猝不及防 | 园豆:2836 (老鸟四级) | 2020-01-06 17:00
0

new File(d/2.jpg)是创建一个文件实例对象,然后transferTo需要一个文件对象。这个2.jpg是可以随便命名,你可以写xxx.jpg或者3.png这种,你在去上传2.jpg图片后,你会发现xxx.jpg或者3.png内容就是2.jpg了。

另外如果是new File(“d:”)没有写上传的具体文件名称,后面需要判断该路径是否存在,比如new File(“d:/test”),要去判断test是否存在,不存在要创建文件夹,最后再调用transferTo方法时要给完整的文件实例对象transferTo(new File(“d:/test”),xxx.jpg)。具体的file类构造的创建有3种形式。
如下:
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

红尘爱逍遥 | 园豆:202 (菜鸟二级) | 2020-01-06 19:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册