flex上传

做完flex上传后,总结下
    后台使用的是servlet,第一次么有设置临时目录,使用的方法
      FileItem fileitem = (FileItem) iter.next();
     fileitem.write(upfile);
在上传excel2007当上传同一个文件多次时,第一次成功,第二次失败,发现是上传完成后,文件还在被使用,所以尝试了第二种方法
    设置临时目录
     DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象
     dff.setRepository(tmpDir);// 指定上传文件的临时目录
并使用文件流处理文件
     List items = sfu.parseRequest(req);
Iterator fii = items.iterator();// 解析request
// 请求,并返回FileItemIterator集合
while (fii.hasNext()) {
FileItem fis = (FileItem) fii.next();// 从集合中获得一个FileItem
if (!fis.isFormField() && fis.getName().length() > 0) {// 过滤掉表单中非文件域
fileName = fis.getName();
System.out.println("取得文件请求" + fis.getFieldName()
+ "他的名是:" + fis.getName() + "值是"
+ fis.getString());
BufferedInputStream in = new BufferedInputStream(fis
.getInputStream());// 获得文件输入流
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File(saveDir + "\\"
+ fileName)));// 获得文件输出流
System.out.println( "文件" + fileName + "上传成功\\n");
Streams.copy(in, out, true);// 开始把文件写到你指定的上传文件夹
in.close();
out.flush();
out.close();
}
}
还有需要注意的就是上传中文文件名时为乱码,解决方法
      DiskFileItemFactory dff = new DiskFileItemFactory();
      ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象
       sfu.setHeaderEncoding("UTF-8");
附件为两种方法的完整代码

你可能感兴趣的:(servlet,Flex)