龍行天下

            政 博
          隨筆 - 23, 文章 - 0, 評論 - 12, 引用 - 0
          數(shù)據(jù)加載中……

          在Struts框架內(nèi)實(shí)現(xiàn)圖片上傳 (轉(zhuǎn)載:http://www.aygfsteel.com/Todayfreeman/)

          這個(gè)問題讓我郁悶了兩三天時(shí)間,最后才發(fā)現(xiàn)問題是在JSP端? <html:form action="/uploadsAction"? enctype="multipart/form-data"? >
          標(biāo)簽如果少了"? enctype="multipart/form-data" ?服務(wù)器就會(huì)報(bào)錯(cuò),
          下面把代碼貼出來.

          JSP端
          ?<html:errors />
          ????????? <html:form action="/uploadsAction"? enctype="multipart/form-data"? >
          ??????????? <html:file property="theFile" />?
          ???????????? <html:radio property="upType" value="a" />CSVFileReader
          ???????????? <html:radio property="upType" value="b" />FileUp??????
          ??????????? <html:submit value="OK"? />
          ????????? </html:form>
          FormBean中將屬性定義為FormFile,geter seter 方法依舊.
          Action 中的代碼如下:實(shí)現(xiàn)將圖片上傳至UPLOAD文件夾內(nèi) 如果文件大于20K或是寬&高超過規(guī)定范圍的,會(huì)重新勾畫.實(shí)現(xiàn)對上傳圖片的控制.
          當(dāng)然這只是測試Action沒有跳轉(zhuǎn)頁面..

          package upload;

          import org.apache.struts.action.ActionMapping;
          import org.apache.struts.action.ActionForm;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.Action;
          import org.apache.struts.upload.*;
          import java.io.IOException;
          import java.awt.Image;
          import java.awt.image.BufferedImage;
          import com.sun.image.codec.jpeg.JPEGImageEncoder;
          import com.sun.image.codec.jpeg.JPEGCodec;

          import java.io.File;
          import java.io.BufferedInputStream;
          import java.io.BufferedOutputStream;
          import java.io.FileOutputStream;

          public class UploadAction extends Action {
          ??? public ActionForward execute(ActionMapping actionMapping,
          ???????????????????????????????? ActionForm actionForm,
          ???????????????????????????????? HttpServletRequest servletRequest,
          ???????????????????????????????? HttpServletResponse servletResponse)throws Exception {
          ??????? System.out.println("asdasdasdasdasdasd");
          ??????? UploadForm uploadForm = (UploadForm) actionForm;
          ??????? FormFile pic =? uploadForm.getPic();
          ??????? String picname = pic.getFileName();
          ??????? String uploadFileName = servletRequest.getSession()
          ??????????????????????????????? .getServletContext()
          ??????????????????????????????? .getRealPath("upload")+"\\"+picname;
          ??????? File upliadFile = new File(uploadFileName);
          ??????? BufferedInputStream bis = null;
          ??????? Image image = null;
          ??????? BufferedOutputStream bos = null;
          ??????? try{
          ??????? if(pic.getFileSize()<2*1024*1024){
          ??????? bis = new BufferedInputStream(pic.getInputStream());
          ??????? image = javax.imageio.ImageIO.read(bis);
          ??????? int width = image.getWidth(null);
          ??????? int height = image.getHeight(null);
          ??????? int w = 160;
          ??????? int h = 120;
          ??????? if(width>w||height>h){
          ??????? BufferedImage bi = new BufferedImage(w,h,
          ???????????????????????????????????????????? BufferedImage.TYPE_INT_RGB);
          ??????? bi.getGraphics().drawImage(image,0,0,w,h,null);
          ??????? bos = new BufferedOutputStream(new FileOutputStream(
          ???????upliadFile));
          ??????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
          ?????encoder.encode(bi);
          ??????? System.out.println(width * height);
          ??????? }else{
          ??????? bos = new BufferedOutputStream(new FileOutputStream(upliadFile));
          ??????? byte[] date = new byte[5*1024];
          ??????? int len = bis.read(date);
          ??????? while (len!=-1){
          ??????????? bos.write(date);
          ??????????? len = bis.read(date);
          ??????? }
          ??????? }
          ??????? }
          ???????????? return actionMapping.findForward("ok");
          ??????? }catch(Exception e){
          ??????? e.printStackTrace();
          ??? } finally {
          ??????? try {
          ??????????? if (bis != null)
          ??????????????? bis.close();
          ??????? } catch (IOException e1) {

          ??????????? e1.printStackTrace();
          ??????? }
          ??????? try {
          ??????????? if (bos != null)
          ??????????????? bos.close();
          ??????? } catch (IOException e2) {

          ??????????? e2.printStackTrace();
          ??????? }
          ??? }

          ??????? return actionMapping.findForward("ok");
          ??? }
          }

          posted on 2006-05-03 20:09 feingto 閱讀(969) 評論(0)  編輯  收藏 所屬分類: Java Web

          主站蜘蛛池模板: 健康| 栾川县| 南阳市| 鄄城县| 南郑县| 天水市| 浮梁县| 中西区| 贵溪市| 德州市| 商都县| 通许县| 高州市| 安义县| 阳谷县| 如皋市| 拜泉县| 枞阳县| 延寿县| 葫芦岛市| 碌曲县| 藁城市| 云梦县| 桦川县| 河西区| 天等县| 茌平县| 西乡县| 原平市| 韶关市| 隆德县| 信丰县| 龙山县| 南京市| 永丰县| 汉川市| 蓝山县| 望谟县| 油尖旺区| 镇沅| 屏边|