Ext + org.apache.commons.fileupload上传文件
在项目中一直使用struts的FormFile上传文件,后来发现这种方式存在一些缺陷:上传前后文件的大小不一致,主要取决于写入stream的时候byte数组大小的设置,
code="java"]
byte[] temp = new byte[BUFFER_SIZE];
BufferedInputStream bi = new BufferedInputStream(file.getInputStream(),BUFFER_SIZE);
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(tempPath));
while (bi.read(temp) != -1) {
bo.write(temp);
}[
如果数组大小设置为1024字节,则每次写入1024字节,但是,如果在最后一次写入的时候原始文件中的字节数不到1024,这是仍然写入1024字节,这就导致在上传文件前后,文件大小不一致的问题,为了解决这个问题采用了apache的commons.fileupload上传文件,此方式在上传前后文件大小一致,至于是如何write的需要进一步研究。具体方式如下:
1. 前台ext需要设置formPanel的fileUpload属性为true,如果前台用jsp需要设置表单form的enctype="multipart/form-data"属性。
2. formPanel用submit方式提交。
上传文件部分代码如下: