最近公司想要做图片服务器,把图片、文件之类的上传上的文件专门放到一台服务器上。由于用的hessian,所以就想写一个专门上传文件的服务。
遇到的问题:
1.由于Spring使用了CommonsMultipartResolver这个类,所有的multi请求都会被解析掉,然后在使用common-fileupload插件的时候parseRuquest()返回的结果为空。
办法:用专门的dispatcherServlet来处理上传图片,配置文件中不用spring的resolver来解析。
2.upload.parseRequest(request)得到FileItem后传到图片服务器上处理时,item的write方法报错,原因是write方法判断要写的内容是否在内存中,也就是isInMemory()方法报错了,因为服务器已经改变了,内容肯定不在内存中。使用Spring的MutilpartFile类应该也会有同样问题,不过没试。
办法:既然内存中拿不到,那就在方法中传过去,加一个byte[]数组参数,将二进制数据保存下来就行了。
3.关于File的mkdirs方法,它会把路径中所有的都建成文件夹,就是说E:/a.jpg,它会把a.jpg建成一个文件夹,所以只能先把上一层的文件夹建好,然后再新建文件就好了。
关于文件的东西还是没有弄的很透彻,需要再补习一下。