在做文件上传的时候,发现了Ext.ux.UploadDialog这个强大的东西。
不过,不知道如何在服务器端(JAVA环境)读取客户端传过来的文件。请问有人成功实现过吗?
网络上搜索到的例子,无法使用。代码如下:
//
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);//这一句报错。
期待。。。
[b]问题补充:[/b]
DiskFileUpload fu = new DiskFileUpload(); //已经是废弃了的
List fileItems = fu.parseRequest(request); //已经是废弃了的
另外,如果能同时指出客户端属性 url 的值就更明确了。
To:Rowen 谢谢的回复。你的代码运行不了。
[b]问题补充:[/b]
To Rowen:
谢谢你的帮助!
问题已经解决。
1。要导入 commons.io.jar包。
2。upload.js调用 Ext.ux.UploadDialog时候,url属性要包含项目名。
3. DiskFileUpload fu = new DiskFileUpload();
确实已经废弃,建议使用:
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
[code="java"]import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
public class UpFileServlet extends HttpServlet {
private String uploadPath="c:\Upfile\"; // 上传文件的目录
private String tempPath="c:\upfiel"; // 临时文件目录
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4KB
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
int start=fileName.lastIndexOf("\\");
//获得上传的文件名
String paths=fileName.substring(start+1, fileName.length());
fi.write(new File(uploadPath+paths));
}
response.getWriter().write("{'success':true,'message':'文件上传成功'}");
}
catch(Exception e) {
System.out.println(e.getMessage()+" : "+e.getCause());
response.getWriter().write("{'success':false,'message':error...'}");
}
}
public void init() throws ServletException {
// 文件夹不存在就自动创建!
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdirs();
if(!new File(tempPath).isDirectory())
new File(tempPath).mkdirs();
}
}[/code]
[quote]Rowen 谢谢的回复。你的代码运行不了。[/quote]
这是我从Ext.ux.UploadDialog上传的文件的实例中复制出来的。。
具体要你自己掌控。。。
你不会直接ctrl+c and ctrl+v 吧。。 :cry:
发了个EXTJS UploadDialog 多文件上传的实例附件到你站内信箱了。。
你自己有空看看吧。。。