通过struts1.0中的 org.apache.struts.upload.CommonsMultipartRequestHandler 转换文件为FormFile对象。
package com.cxsoft.applet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import org.apache.commons.fileupload.DefaultFileItemFactory;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.struts.upload.FormFile;
/**
* Servlet implementation class for Servlet: UploadServlet
*
*/
public class UploadServlet {
public static void paintss(){
try {
Class parentClass = Class
.forName("org.apache.struts.upload.CommonsMultipartRequestHandler");
Class childClass = parentClass.getDeclaredClasses()[0];
Constructor c = childClass.getConstructors()[0];
c.setAccessible(true);
// fileName.getAbsolutePath()是文件的绝对路径
// parameterMap.get("filmName")是文件名称(不带后缀)
FileItem aitem = createFileItem("F:\\images\\102CANON\\20100707020.jpg","20100707020");
FormFile photoFile = (FormFile)c.newInstance(new Object[]{aitem});
// photo = FileControl.saveFile(new FormFile[] { photoFile }, "");
} catch (Exception e) {
e.printStackTrace();
}
}
private static FileItem createFileItem(String filePath,String name)
{
FileItemFactory factory = new DefaultFileItemFactory(16, null);
String textFieldName = "file";
int num = filePath.lastIndexOf(".");
// String extFile = filePath.substring(num);
FileItem item = factory.createItem(textFieldName, "image/jpeg", false,
filePath);
File newfile = new File(filePath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try
{
FileInputStream fis = new FileInputStream(newfile);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192))
!= -1)
{
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return item;
}
}