Query插件ajaxfileupload上传文件无需创建form表单

来源:互联网 发布:榕基软件股份有限公司 编辑:程序博客网 时间:2024/06/15 23:31

Query插件ajaxfileupload上传文件无需创建form表单,这样就可以解决在form嵌套中ajax表单提交出现的问题

页面代码:(需要把ajaxfileupload.js包含进来)

<!-- 引入相关的js文件,相对路径  -->
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/ajaxfileupload.js"></script>

<!-- 执行上传文件操作的函数 -->
      <script type="text/javascript">

       function uploadFile() {

               $.ajaxFileUpload({url:path + "/compoundbatchsearch/upLoadTxtFile.do",
                                          secureuri:false,
                                          fileElementId:"batchSearchFile",
                                          dataType:"XML",
                                          success:function (data, status) {
                                          uploadcallback(data);
                                          },
                                         error:function (data, status, e) {
                                         uploadcallback("occurError");
                                         }
                                });

              }

 

<div id="search_area" style="position: absolute; z-index: auto; ">
      <input id="uploadFile" accept="text/html" type="file" name="uploadFile" />
      <input type="button" id="upload" value="uploadFile()" />
 </div>

 

服务器端代码:(应用了spring2.5,需要在spring配置文件中定义multipartResolver bean)

@Controller
public class CompoundBatchSearchController {
   
    private static final Logger logger = Logger.getLogger(CompoundBatchSearchController.class);
   
    @Resource(name="compoundBatchSearchService")
    private ICompoundBatchSearchService compoundBatchSearchService;
   
    @RequestMapping
    public void upLoadTxtFile(HttpServletResponse response, HttpServletRequest request) {
        logger.info("upload txt file action...");
        // clear session before parese txt file
        if (request.getSession().getAttribute(Constants.RESULT_IDS) != null) {
            request.getSession().removeAttribute(Constants.RESULT_IDS);
        }
       
        try {
            // upload file
            MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;
            MultipartFile mf = mhs.getFile("batchSearchFile");
            File file = FilePathHelper.uploadFile(mf, Constants.UPLOAD_TXT);
            logger.info("upload file success!");
            Map<String, List<String>> idsMap = fetchIDsFromFile(file, response);
           
            if (null == idsMap || idsMap.isEmpty()) {
                logger.error("cannot read data form file!");
                MessageUtils.outputJSONResult("empty", response);
                return;
            }
            logger.info("read upload file success!");
            List<String> casNumbers = idsMap.get("CAS");
            List<String> mdlNumbers = idsMap.get("MDL");
            if (casNumbers != null && !casNumbers.isEmpty()&& mdlNumbers != null && !mdlNumbers.isEmpty()) {
                logger.error("It contains invalid data in upload file");
                MessageUtils.outputJSONResult("dataError", response);
                return;
            }
           
            if (casNumbers != null && !casNumbers.isEmpty()) {
                List<Long> ids = compoundBatchSearchService.getStructureIdsByCasNo(casNumbers);
                if (ids != null) {
                    request.getSession().setAttribute(Constants.RESULT_IDS, ids);
                }
            }
           
            if (mdlNumbers !=null && !mdlNumbers.isEmpty()) {
                List<Long> ids = compoundBatchSearchService.getStructureIdsByMdl(mdlNumbers);
                if (ids != null) {
                    request.getSession().setAttribute(Constants.RESULT_IDS, ids);
                }
            }
            MessageUtils.outputJSONResult("success", response);
           
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            MessageUtils.outputJSONResult("occurError", response);
        }
    }

 

spring中定义的upload部分:

<!-- upload file -->
<bean id="multipartResolver"         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxInMemorySize">
            <value>20480</value>
        </property>
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
 </bean>

原创粉丝点击