首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts1下传注意事项

2012-09-24 
struts1上传注意事项1.form action%basePath%priRing.do?methodupload methodpost enctypemu

struts1上传注意事项
1.
    <form action="<%=basePath%>priRing.do?method=upload" method="post" enctype="multipart/form-data">
    <table>
    <tr>
    <td><input type="file" name="formfile"/></td>//1
    </tr>
       <tr>
    <td><input type="submit"/></td>
    </tr>   
    </table>
    form中
private FormFile formfile;//2
1和2两处的名字必须一样

2.
String name=ff.getFileName();
System.out.println("name="+name);
InputStream is=ff.getInputStream();
FileOutputStream fos=new FileOutputStream(path+"/"+ff.getFileName());//3
3处的路径必须加文件的名字

代码如下:

package com.buybal.mgr.struts.action.pictureAndRing;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.apache.struts.upload.FormFile;import org.directwebremoting.util.Logger;import com.buybal.mgr.struts.form.PictureAndRingForm;import com.jrt.mgr.Global;import com.jrt.mgr.bean.PictureAndRing;public class PictureAndRingAction extends DispatchAction {    private static final Logger logger=Logger.getLogger(PictureAndRingAction.class);public ActionForward pictureUpload(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {PictureAndRingForm fileForm=(PictureAndRingForm)form;try{//将文件进行上传response.setCharacterEncoding("utf-8");FormFile ff=fileForm.getFile();if(ff.getFileSize()<0||ff.getFileName().equals("")){logger.info("上传的文件不存在");return null;}String path="D:\\upload";//路径可以通过配置文件获得File file=new File(path);if(!file.exists()){//如果文件不存在则建立该目录file.mkdirs();}InputStream is=ff.getInputStream();OutputStream bos = new FileOutputStream(path+"\"+ff.getFileName());//此处的路径是:path+文件名    int bytesRead = 0;        byte buffer[] = new byte[ff.getFileSize()];        while ((bytesRead = is.read(buffer, 0, ff.getFileSize())) != -1)  {        bos.write(buffer, 0, bytesRead);                     }        bos.close();               is.close();           //以下方法是将Zip文件进行解压        int type=fileForm.getType();//上传内容,0图片,1是铃声        int contenttype=fileForm.getContenttype();//上传内容unzip(path,type,contenttype);       System.out.println("dd");}catch(Exception e){e.printStackTrace();logger.error("上传文件失败,失败原因是:"+e.toString());}return null;}/*解压文件 * **/public synchronized void unzip(String path,int type,int contenttype) throws Exception{ File fff=new File(path);       File[] f=fff.listFiles();       for(int i=0;i<f.length;i++){       File fs=f[i];       System.out.println(fs.getName());       if(fs.getName().indexOf(".zip")>-1){       ZipFile zip=new ZipFile(fs);       path=path+"\"+fs.getName().substring(0, fs.getName().indexOf(".zip"));       Enumeration e = zip.entries();       ZipInputStream iss=new ZipInputStream(new FileInputStream(fs));       while(e.hasMoreElements()){       ZipEntry zipEnt = (ZipEntry) e.nextElement();       if(zipEnt.isDirectory()){       continue;//如果是根目录则跳出       }       String name= (new String(zipEnt.getName().getBytes("ISO-8859-1"),"UTF-8")).trim();       File ff=new File(path);       if(!ff.exists()){       ff.mkdirs();       }       if(name.indexOf("/")>-1){//文件包含子目录时       name=name.substring(name.indexOf("/")+1,name.length());       }       if(name.indexOf("\")>-1){//包含子目录时       name=name.substring(name.indexOf("\")+1,name.length());       }      // InputStream iss = zip.getInputStream(zipEnt);                                      OutputStream os = new FileOutputStream(path+"\"+name); //循环中不能用BufferedInputStream,会报stream Close错误                   int bytesRead = 0;                    byte buffer[] = new byte[8192];                 while ((bytesRead = iss.read(buffer, 0, 8192)) != -1) {                     os.write(buffer, 0, bytesRead);                 }                                        os.close();                       //将上传的图片存入数据库                    String fpath=path+"\"+name;                    List<PictureAndRing> list=Global.parDAO.getPictureAndRing(type, contenttype, fpath);                    if(list==null||list.isEmpty())//检查数据库中是否有改图片                    Global.parDAO.addPictureAndRing(name,type,contenttype,fpath);       }       iss.close();       }       }}}

热点排行