项目是extjs2.2+SSH,之前做了用extjs做文件上传功能,实现方法是这样的:
控件就用的textfield,inputType为file,如
var upload = new Ext.form.TextField({
fieldLabel : 'XXX',
name: 'upload',
allowBlank : false,
inputType:'file'
});该控件和其他控件一起在一个表单中,点击表单的保存时,触发表单的action进行保存操作,在action中调用一个自己写的上传文件方法。现在问题是:1.如何在extjs里面检验上传文件的大小,在用户点击上传时判断文件大小给予提示?
2.如何控制文件上传的大小?默认的好像是4M,我想将它改大一点。
控件就用的textfield,inputType为file,如
var upload = new Ext.form.TextField({
fieldLabel : 'XXX',
name: 'upload',
allowBlank : false,
inputType:'file'
});该控件和其他控件一起在一个表单中,点击表单的保存时,触发表单的action进行保存操作,在action中调用一个自己写的上传文件方法。现在问题是:1.如何在extjs里面检验上传文件的大小,在用户点击上传时判断文件大小给予提示?
2.如何控制文件上传的大小?默认的好像是4M,我想将它改大一点。
<httpRuntime maxRequestLength="10240000" />
增加 maxRequestLength
private static final int BUFFER_SIZE=16*1024;
public static String upload(String uploadFileName, String savePath,
File upload) {
String fileName = uploadFileName;
File file = new File(savePath + "/" + uploadFileName);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (file.exists()) {
String prefileName = getFileName(uploadFileName);
String extension = getExtention(uploadFileName);
int i = 1;
while (file.exists()) {
fileName = prefileName + i + extension;
file = new File(savePath + "/" + fileName);
i++;
}
}
try {
InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(upload),
BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(file),
BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
for (int byteRead = 0; (byteRead = in.read(buffer)) > 0;) {
out.write(buffer, 0, byteRead);
} } finally {
if (null != in) {
in.close();
}
if (null != out) {
out.close();
}
} } catch (Exception e) {
e.printStackTrace();
return "";
}
return fileName;
}