`

ajax上传图片(struts1.2)

阅读更多

一.sample.html(提交页面)

<form name="upfile_form" action="singertonUploadAction" method="POST" enctype="multipart/form-data">
      <input type="file" name="upload_file" id="upload_file" onchange="checkFileSize(this);" />
 
  <p>
   <input type="submit" value="submit" />
  </p>
  <iframe name="check_file_frame" style="display:none;"></iframe>
</form>

 

二.

public class SingertonUploadForm extends ActionForm {

 private FormFile upload_file;

 public FormFile getUpload_file() {
  return upload_file;
 }

 public void setUpload_file(FormFile upload_file) {
  this.upload_file = upload_file;
 }
 
}

三.

public class SingertonUploadAction extends Action {

  private static String UPLOAD_FILE_PATH = "c:/";

     @Override
     public ActionForward execute(ActionMapping mapping, ActionForm form,
             HttpServletRequest request, HttpServletResponse response) throws Exception {
      SingertonUploadForm  uploadForm = (SingertonUploadForm)form;
         //得到上传的文件
         FormFile uploadFile = uploadForm.getUpload_file();
         //得到文件名
         String fileName = uploadFile.getFileName();
         //得到文件大小
         int fileSize = uploadFile.getFileSize();
         System.out.println("FileName = " + fileName);
         System.out.println("FileSize=" + fileSize);
         boolean result = true;
         try{
             //得到文件的输入流
             InputStream is = uploadFile.getInputStream();
             //上传文件
             uploadFile(fileName,is);
         }catch(IOException ex){
             ex.printStackTrace();
             //假如上传文件失败,设置一个失败的标记位
             result = false;
         }
         if(result){
             return mapping.findForward("success");
         } else {
             return mapping.findForward("fail");
         }       
     }
    
     /**
      * 上传文件
      * @param fileName
      * @param is
      * @throws IOException
      */
     private void uploadFile(String fileName,InputStream is) throws IOException{
         OutputStream os = new FileOutputStream(UPLOAD_FILE_PATH + fileName);
         //8k缓存数据
         byte[] buffer = new byte[1024 * 8];
         //设置读进缓存的字节数
         int len;
         while((len=is.read(buffer))!=-1){
             //将缓存数据写入磁盘
             os.write(buffer,0,len);
         }
         //关闭输出流
         os.close();
         //关闭输入流
         is.close();
     }

 }

四.类似ajax提交需要check_file.js

 

var fileForm = new Object();
function checkFileSize(fileObj) {
  if(fileObj.value != "") {
    var form = document.forms['upfile_form'];

    //把form的原始数据缓存起来
    fileForm.f = form;
    fileForm.a = form.getAttribute("action");  //form.action 为一个静态的对象,所以这里要使用getAttribute方法取值
    fileForm.t = form.target;

    //请求服务器端
    form.target = "check_file_frame";
    //form.action = "./ajax.php?act=upload";
    form.action = "singertonUploadAction.do";
    //form.submit(); 其实上面的action已经会执行submit操作,这步可有可无
  }
  return false;
}

function ajax_callback(result) {
  //还原form属性
  fileForm.f.target = fileForm.t;
  fileForm.f.setAttribute("action", fileForm.a);

  //处理结果
  switch(result) {
    case 0:
      alert("文件超过了200K或者没有选择文件,请重新上传!");
      //todo somthing
    default :
      alert("合法");
      //do somthing,如果你想使用这种方法实现真正的上传的话,那么在成功后把返回的文件路经存储在一个 input[hidden]里是个不错的办法
  }
  return ;
}

 

分享到:
评论

相关推荐

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...

    大学生互动平台1(ssh+ext+jfreechart+部分报表功能)

    社团申请会在服务器端生成pdf申请表格(带有照片)由于上传限制只能分两次传,请见谅,不过不会让你失望的。这一部分不包括jar包 最近又新上传了一个大学生社团互动平台管理系统,是这个系统的改良版,,多加了用...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...

    JAVA WEB典型模块与项目实战大全

    第15章 在线文件上传和下载(struts 2.x+fileupload)  15.1 在线文件上传和下载模块原理  15.2 文件上传组件fileupload  15.3 初步使用文件上传组件(components-fileupload)  15.4 单文件的上传  15.5 多...

    Java Web程序设计教程

    6.5.2struts2文件上传实现方式 136 6.5.3struts2文件下载实现方式 141 本章小结 143 课后练习 144 第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2...

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    1.2 基础开发..................................................................................................................4 1.2.1 输入页面.............................................................

    java web 视频、电子书、源码(李兴华老师出版)

    0208_文件上传 0300_第三部分:WEB高级开发 0309_Servlet程序开发 0310_表达式语言 0311_Tomcat数据源 0312_JSP标签编程 0313_JSP标准标签库(JSTL) 0314_AJAX开发技术 0400_第四部分:框架开发 0415_...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    李兴华Java Web开发实战经典(高清版) Part2

    1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

Global site tag (gtag.js) - Google Analytics