`

jquery+struts1.3.8的ajax上传文件

阅读更多
最近做项目,对用户体验要求较高,大量采用jquery的ajax支持,最近要做个文件上传,要求也用ajax方式实现,这里采用了jquery的ajaxfileupload.js插件。见附件

1.上传jsp。

<table cellpadding="0" cellspacing="0" border="0" class="ktable_9" >
        <tr>
            <td><input type="file" name="upoadFileName" id="upoadFileName"><a  href="#" onclick="uploadFile();return false;"><span><span>上传</span></span></a></td>
            </tr>
            <tr>
            <td>&nbsp;</td>
            </tr>
        </table>

2.下面是前端的js脚本:

function uploadFile(){
                var myurl="/uploadMyFile.do?tenderInfoId="+tenderInfoId;
         jQuery.ajaxFileUpload(
                   {
                url:myurl,          
                secureuri:false,
                            fileElementId:'imgFile',   --上传文件对应的文本域的id                    
                dataType: 'json',                                    
                success: function (data, status)          
                {    
                    alert('上传成功');
                                  },
                error: function (data, status, e)           
                {
                   alert('上传失败');
                }
            } );
    }


3.这是后台的action:
public ActionForward uploadMyFile(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
/* =============禁止缓存============== */
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
/* =============禁止缓存============== */
response.setContentType("text/html;charset=UTF-8");

String filewholeName = "";
try {
CompanyApplyDTO applyDTO = (CompanyApplyDTO) form;
  // FormFile formfile =  applyDTO.getImgFile();
//--这种方式也可以,但CompanyApplyDTO 中应该有 一个这样的属性FormFile  imgFile;

    FormFile formfile = (FormFile) applyDTO.getMultipartRequestHandler()
.getFileElements().get("imgFile");
//--上传文件对应的文本域的id                    
String fileName = file.getFileName();
String fileSimpleName = fileName.substring(fileName
.lastIndexOf("."));
fileName = DateHandler.convertStringToDate(new Date(), null)
+ fileName;

if (file.getFileSize() > 50 * 1024 * 1024) {
write("{'result':false,'error':' filesize'}", response);
return null;
}
String uploadPath = this.getServlet().getServletContext()
.getRealPath("/")
+ "uploadfile/";
File savePath = new File(uploadPath);
System.out.println(savePath.getAbsolutePath());
if (!savePath.exists()) {
savePath.mkdir();
}
filewholeName = uploadPath + "/" + fileName;
FileOutputStream fos = new FileOutputStream(filewholeName);
fos.write(file.getFileData());
log.info("#############上传文件:" + fileName);
write("{'result':true}", response);
} catch (Exception e) {
write("{'result':false,'error':'" + e.getMessage() + "'}", response);
}
return null;
}
说明:

jaaxfileupload.js有可能执行错误,在接受返回值后,刚可将代码中
原为 :  eval("data =  "+data+ );  替换为如下:
eval("data = \" "+data+" \" ");


原代码基于jquery 低版本,1.4.2之前, 在高版本jquery中执行会有错误,handleError函数在高版本中已经没有,需做相关处理,最简单是从jquery1.4.2中移植到这里。

    eval("data = \" "+data+" \" ");

在springmvc中我如下返回 :  out.write("{'success':'1'}");现在
如下方式接收返回值没问题。
$.ajaxFileUpload({ 
        url: saveurl, 
        secureuri:false, 
        fileElementId:'advertResource', 
        dataType: 'json', 
        data: {//加入的文本参数 
            "advertType":myadvertType,  //广告类型
            "advertisingName":$('#advertisingName').val(),
            "beginDate":$('#beginDate').val(),
            "endDate":$('#endDate').val(),
            "eneityId":publisherId,
         //   "myurl":advertInfourl,
            "picType":picType,
            "location":advertTotal+1
        }, 
        success: function(data,status) {
        if(data.success=='1'||data.success==1){
        isAddFlag=true;
            closeAddDiv();
            alert("添加广告成功!");
            advertTotal+=1;
        }else{
        alert("添加广告失败!");
        }
        }, 
        error: function(data, status, e) { 
            alert("系统异常,添加 广告信息失败!");
            closeAddDiv();
         } 
    }); 

springmvc后台controller代码:这里除了上传文件外,还有自定义的其他参数。
只需要简单修改ajaxfileupload.js,就可以了。

@RequestMapping(value="/addAdvertInfo")
/*@ResponseBody*/
public void addAdvertisingInfo(HttpServletRequest request, HttpServletResponse response) {
PrintWriter out=null;
try {
out = response.getWriter();
boolean isUpload = ServletFileUpload.isMultipartContent(request);
if (isUpload) {
AdvertisingInfoPO advertObj = new AdvertisingInfoPO();
advertObj.setAdvertisingName(request
.getParameter("advertisingName"));
advertObj.setEntity(request.getParameter("eneityId"));
advertObj.setLocation(request.getParameter("location"));
//advertObj.setUrl(request.getParameter("myurl"));
advertObj.setType(Integer.parseInt(request
.getParameter("advertType")));
advertObj.setBeginDate(DateFormatUtil.parser("yyyy-MM-dd",
request.getParameter("beginDate")));
advertObj.setEndDate(DateFormatUtil.parser("yyyy-MM-dd",
request.getParameter("endDate")));

advertObj.setAdvertId(KeyUtil.getID());
             
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile mfile = (CommonsMultipartFile) multipartRequest.getFile("advertResource");
advertObj.setResource(mfile.getBytes());
advertObj.setResourceType(request.getParameter("picType"));
advertisingInfoService.create(advertObj);
}
} catch (Exception e) {
log.error("addAdvertisingInfo:添加广告信息失败。", e);
out.write("{'success':'0'}");
e.printStackTrace();
}
  out.write("{'success':'1'}");
}
0
2
分享到:
评论
2 楼 peixingchen 2015-06-29  
你好,楼主,Action里面的CompanyApplyDTO类里面的代码是什么样的,能给出吗?
String fileName = file.getFileName(); 这句的file是从哪里来的?
还有,楼主能不能给个完整的demo?
1 楼 BGX5810 2012-03-03  
试试看把“dataType: 'json', ”换成“dataType: 'text', ”,我是这么解决的

相关推荐

    Spring2.5+Struts1.3.8+Hibernate3.0整合

    ### Spring2.5 + Struts1.3.8 + Hibernate3.0 整合知识点详解 #### 一、概述 Spring2.5 + Struts1.3.8 + Hibernate3.0 (简称SSH)整合是一种典型的Java Web开发模式,旨在通过组合这三种技术框架来构建高性能、易于...

    Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

    本集成方案聚焦于Spring 4.2.5、Hibernate 4.3.11和Struts 1.3.8这三个特定版本的集成,以下将详细阐述它们的核心功能以及如何进行整合。 首先,Spring是Java企业级应用中的核心框架,它提供了依赖注入(DI)和面向...

    Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    本集成方案旨在提供一个基于Spring 4.2.5、Hibernate 4.3.11和Struts 1.3.8的完整开发环境,以帮助开发者构建高效、可维护的企业级Java Web应用程序。 首先,Spring框架是一个全面的后端开发框架,它提供了依赖注入...

    Spring2.5+Hibernate3.3+Struts1.3整合需要用到的所有jar文件

    5. **配置Struts**:修改Struts的配置文件(如`struts-config.xml`),定义动作映射和结果视图。 6. **整合Spring和Hibernate**:通过Spring的Hibernate模板或DAO支持,将数据库操作与业务逻辑解耦。 7. **整合...

    struts1.3.8.chm

    struts1.3.8.chm帮助文档struts1.3.8.chm帮助文档struts1.3.8.chm帮助文档struts1.3.8.chm帮助文档

    Struts 1.3.8 学习笔记(一)

    在实际开发中,学习 Struts 1.3.8 包括理解其核心概念、配置文件的编写、Action 类的设计、Form Beans 的使用以及 JSP 页面的开发。同时,熟悉其提供的标签库和错误处理机制也是必不可少的。对于那些对源码感兴趣的...

    struts1.3.8库

    Struts1.3.8是该框架的一个版本,发布于2007年,它是对早期版本的更新,旨在提供更稳定、安全和功能丰富的平台。在本文中,我们将深入探讨Struts1.3.8的核心概念、功能以及它在Java Web开发中的重要性。 首先,...

    Struts2.0.14+Spring2.5.6+Struts.1.3.8+Hibernate3.2

    Struts2.0.14、Spring2.5.6、Struts1.3.8以及Hibernate3.2是四个非常关键的Java Web开发框架,它们在2000年代末到2010年代初广泛应用于企业级应用中。这个压缩包文件包含了这些框架的核心组件,对于学习和理解SSH...

    Struts 1.3.8 jar包,

    8. **Internationalization(国际化)**:Struts 1.3.8支持多语言环境,通过资源文件提供不同语言的文本。 9. **Exception Handling**:提供了一种全局的异常处理机制,可以统一处理应用程序中的异常。 10. **...

    Struts 1.3.8jar包

    Struts 1.3.8 是 Apache Software Foundation 开发的 Struts 框架的一个版本,主要用于构建基于 Java 的企业级 Web 应用程序。这个框架是 Model-View-Controller (MVC) 设计模式的一个实现,它为开发人员提供了一种...

    struts 1.3.8 源码

    Struts 1.3.8 是 Apache 软件基金会开发的一个开源的 Web 应用框架,主要用于构建基于 Java 的企业级应用。该版本在 Struts 1.x 系列中是一个重要的里程碑,提供了许多改进和修复,以提高稳定性和性能。通过分析 ...

    struts1.3.8文档

    Struts1.3.8是Apache软件基金会的Java开源框架,用于构建企业级Web应用程序。这个框架基于Model-View-Controller(MVC)设计模式,为开发者提供了强大的控制层解决方案,帮助他们创建结构清晰、可维护性强的Java Web...

    导入工具+motrix1.3.8安装包.zip

    【标题】"导入工具+motrix1.3.8安装包.zip" 提供的是 Motrix 的一个特定版本,即1.3.8版的安装资源。Motrix 是一款多功能的下载管理器,支持多种协议,如HTTP、HTTPS、FTP、BT(BitTorrent)和磁力链接,让用户可以...

    struts1.3.8API CHM

    struts1.3.8API CHM struts1.3.8API CHM struts1.3.8API CHM

    struts1.3.8开发包

    Struts1.3.8是Apache软件基金会的Java Web应用程序框架,主要用于构建MVC(Model-View-Controller)架构的应用程序。此版本是Struts1系列的一个稳定版本,提供了许多改进和修复,使得开发者能够在现有的Struts1项目...

    韩顺平spring雇员管理系统struts-1.3.8-lib jar包

    5. **第三方库**:还包括了与Struts集成的其他第三方库,例如`commons-fileupload.jar`用于处理文件上传,`commons-logging.jar`提供日志服务,`commons-beanutils.jar`、`commons-collections.jar`和`commons-...

    struts1.3.8API文档

    Struts1.3.8是该框架的一个稳定版本,包含了丰富的功能和改进,是开发者在J2EE平台上进行Web开发的重要工具。 在Struts1.3.8 API文档中,我们可以找到关于这个版本的所有核心组件、类库和接口的详细信息,这对于...

    较全的struts1.3.8-apps

    标题中的“较全的struts1.3.8-apps”意味着这个压缩包可能包含了一系列与Struts 1.3.8框架相关的应用示例、库文件和资源,旨在为开发者提供一个学习和参考的平台。这些应用程序实例通常展示了如何在实际项目中运用...

    ApexDC++ v1.3.8

    Apexdc++ 是一个开放源码的免费的P2P客户端软件,用于文件交流,支持中文搜索,同时又可以作为聊天工具。基于 StrongDC++ 和 DC++ 进行开发,相比于前两者有更多的选项和功能可用。常常用于局域网中的高速文件共享。

    struts1.3.8-lib

    这个“struts1.3.8-lib”压缩包包含了运行Struts1应用程序所必需的库文件,为开发者提供了构建基于Model-View-Controller(MVC)架构的Web应用的强大支持。本文将深入探讨Struts1的核心组件和关键知识点。 1. **MVC...

Global site tag (gtag.js) - Google Analytics