Ext2.0 文件上传 Struts

在Ext中文件上传技术总结.
使用Struts自带上传组件上传.需要commons-fileupload.jar 包,在后台文件中还需要
JsonOutUpload.java 文件(这个文件代码在下面给出).

前台:
var file=new Ext.form.TextField ({
fieldLabel : "附件名",
allowBlank : true,        //是否允许为空
inputType: 'file',
width:200,
decimalPrecision:2,
name : "file"
});


在 FormPanel 中 加入
frame : true,
fileUpload: true,
这两个属性..

这就是前台注意的...

后台:
在Struts Form中..
Private FormFile  file;
..getFile()
..setFile(FormFile file).

在Struts Action中..
CircsFeedbackForm circsFeedbackForm = (CircsFeedbackForm) form;
TCircsfeedback feedback=new TCircsfeedback();
FormFile file=circsFeedbackForm.getFile();
UploadFile.upload( file,this.getServlet().getServletContext().getRealPath("/upload"));
gvvList.getList().add(feedback);
gvvList.setSuccess(true);
JsonOutUpload.outJson(gvvList,response);
注意:这里一定要注意的是这个JsonOutUpload.outJson()..
如果你不用这个。用普通的JsonOut.outJson()..试试..看会出现什么结果..
这个UploadFile是一个上传文件所用到的类(自己写的.)
源代码:

public class UploadFile {
public static String saveFileSrc="";

/**
* 上传
*
* @param file
* @param serviceSrc
*/
public static void upload(FormFile file, String serviceSrc) {
InputStream is = null;
OutputStream os = null;
//给文件重新命名
saveFileSrc=serviceSrc+"/"+fileName(file.getFileName());
//从上传文件对象中得到一个输入流
try {
is = file.getInputStream();
os = new FileOutputStream(saveFileSrc);
byte[] buffer = new byte[8192];

int count = 0;

while((count = is.read(buffer, 0, 8192)) != -1){//读
         os.write(buffer, 0, count); //写
    }
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

/**
* 删除文件
*
* @param imageSrc
*/
public static void deleteFile(String fileSrc) {
try {
File file = new File(fileSrc);
file.delete();
} catch (Exception ex) {
ex.printStackTrace();
}
}

/**
* 给上传文件重新命令
*
* @return String
*/
public static String newFileName() {
return new Date().getTime() + "";
}

/**
* 获得文件类型
*
* @param fileSrc
* @return String
*/
public static String getFileType(String fileSrc) {
return fileSrc.substring(fileSrc.lastIndexOf("."), fileSrc.length());
}

/**
* 文件名
*
* @param fileSrc
* @return String
*/
public static String fileName(String fileSrc) {
return newFileName() + getFileType(fileSrc);
}
}


上面说的JsonOutUpload.java文件
源代码:
public class JsonOutUpload {
//文件上传的时候  response.setContentType("text/html"); 加这个可以让他不包装json数据
public static void outJsonString(String str,HttpServletResponse response) {
response.setContentType("text/javascript;charset=UTF-8");
response.setContentType("text/html");
outString(str,response);
}
public static void outJson(Object obj,HttpServletResponse response) {
outJsonString(JSONObject.fromObject(obj).toString(),response);
}

public static void outJsonArray(Object array,HttpServletResponse response) {
outString(JSONArray.fromObject(array).toString(),response);
}

public static void outString(String str,HttpServletResponse response) {
try {
PrintWriter out = response.getWriter();
out.write(str);
out.close();
} catch (IOException e) {
}
}
public static void outXMLString(String xmlStr,HttpServletResponse response) {
response.setContentType("application/xml;charset=UTF-8");
outString(xmlStr,response);
}

}

你可能感兴趣的:(JavaScript,json,struts,OS,ext)