通过绝对路径转换文件为FormFile对象

来源:互联网 发布:北上广律师知乎 编辑:程序博客网 时间:2024/06/05 17:28

通过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;
    }
 
}

 

原创粉丝点击