用spring MVC上传文件,都是MultipartFile,如何转化成File

程序员Joe 发布于 2014/07/11 10:44
阅读 38K+
收藏 1

如题,上传附件的时候我先要去判断文件的哈希值,如果附件中已经有,就不需要上传,用之前的。

我需要把MultipartFile转换成File类型。

网上查阅有2中方式,一种是MultipartFile自带的transferto

这个方法可以转,但是。。。。文件直接就上传上去了。。。我还判断哈希个毛线?。。。

第二种,spring 配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="4096"/>
    </bean>
然后(File)xxx强转


但是尝试后,还是报转换类型错误

http://www.oschina.net/question/73022_156324


在线等大神求解,感激不尽!!!!!!!!!

加载中
0
我类个擦
FileOutputStream fos = FileUtils.openOutputStream(new File(dir + fileName));
IOUtils.copy( MultipartFile .getInputStream(), fos);
程序员Joe
程序员Joe
回复 @冷血 : 好吧。。。是传到服务器了。。换个说法。。不用保存文件了。。。是么
冷血
冷血
回复 @VivyJoe : 。。。。服了你了。转二进制流,难道文件就没上传到服务器么?
程序员Joe
程序员Joe
虽然我自己已经解决了.... 思路跟你差不多吧,转二进制流。 就勾你了!
0
len
len
        Map<String, MultipartFile> files = mureq.getFileMap();
        if (files == null || files.size() == 0) {
            throw new RuntimeException("no file");
        }
        User user = (User) request.getAttribute(CommScheme.USER.getName());
        Map.Entry<String, MultipartFile> e = files.entrySet().iterator().next();
        MultipartFile file = e.getValue();
0
len
len


        MultipartHttpServletRequest mureq = (MultipartHttpServletRequest) request;

Map<String, MultipartFile> files = mureq.getFileMap(); 
        if (files == null || files.size() == 0) { 
            throw new RuntimeException("no file"); 
        } 
        User user = (User) request.getAttribute(CommScheme.USER.getName()); 
        Map.Entry<String, MultipartFile> e = files.entrySet().iterator().next(); 
        MultipartFile file = e.getValue(); 

0
冷血
冷血

文件不上传到服务器,你怎么能生成 hash值??

另一种方案是 客户端生成 hash 值,先请求检测一次,如服务器端没有,再进行上传。如果有了直接提示上传成功。当然web客户端生成 hash 值好像也不好做吧。js 没办法访问本地磁盘。

程序员Joe
程序员Joe
我知道啊。我服务器端,接收到File对象,我就可以算出它的hash值了,不一定要保存文件啊。我是先判断hash值存不存在,然后选择保存或不保存,如果先存了再去查hash值,还有什么意义呢? 虽然这个问题我已经解决了。我直接转二进制流搞了,省的麻烦
冷血
冷血
回复 @char1st : 那按我前面说的就可以了,先请求一次只提交 hash 值检测就行了。
char1st
char1st
https://github.com/satazor/SparkMD5 http://stackoverflow.com/questions/768268/how-to-calculate-md5-hash-of-a-file-using-javascript
返回顶部
顶部