Ajax文件上传和后台SpringMVC获取文件

本文介绍了一个使用HTML、JavaScript和SpringMVC实现的CSV文件上传功能。该功能包括前端文件格式验证、异步上传处理及后端文件内容验证等关键步骤。

页面与js代码如下:

<form id="csvForm" enctype="multipart/form-data">
    <input id="accountName" name="accountName" value="${accountName}" hidden>
    <input type="button" value="导入" id="external_button"/>
    <input type="file" name="file" id="file"/>
</form>
//JS代码

/**
 * 上传按钮绑定事件
 */
$('#external_button').click(function () {
    if ($('#file').val() == "") {
        alertMessage("请先选择文件");
        return false;
    }
    var csvPath = $('#file').val();
    var fileExtendOff = csvPath.substring(csvPath.lastIndexOf('.')).toLowerCase();
    if (fileExtendOff != '.csv') {
        alertMessage("文件格式有误,请上传csv格式");
        return false;
    }
    doUpload();
    return false;
});

/**
 * 异步上传
 */
function doUpload() {
    var formData = new FormData($("#csvForm")[0]);
    $.ajax({
        url: contextPath + '/security/importExtReconFile.htm' ,
        type: 'POST',
        data: formData,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function (data) {
            if (data.code == '200') {
               alertMessage(data.content);
               window.location.reload();
            } else {
               alertMessage(data.content);
                
            }
        }
    });
}

SpringMVC后台接收页面参数和文件

@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/security/importExtReconFile")
public MessageBean importExtReconFile(@RequestParam("file") MultipartFile file,
        HttpServletRequest request) throws IOException {
    MessageBean messBean = new MessageBean(MessageCode.COMMON_SUCCESS);
    //获取页面参数
    String accountName = request.getParameter("accountName");
    //获取文件名
    String filename = file.getOriginalFilename();
    AccountPeriodPo accountPeriodPo = new AccountPeriodPo();
    InputStream fis = null;
    try {
        //获取上传文件的输入流
        fis = file.getInputStream();
        //1.检查对账文件数据的格式CSV
        MessageBean result = checkCSVFile(fis);
        if (!MessageCode.COMMON_SUCCESS.equals(result.getCode())) {
            logger.error("csv数据格式不正确");
            messBean.setCode(MessageCode.SYSTEM_ERROR);
            messBean.setContent(result.getContent());
            return messBean;
        }
        //2.存储到指定位置
        if (FtpUtil.uploadFile(ftpHost, ftpUsername, ftpPassword, ftpPort, ftpDir, filename, fis)) {
            logger.info("FTP上传文件成功");
        } else {
            logger.error("FTP文件上传失败 !!!");
            messBean.setCode(MessageCode.SYSTEM_ERROR);
            messBean.setContent("FTP文件上传失败");
            return messBean;
        }
    } catch (IOException e) {
        logger.error("文件导入失败", e);
        messBean.setCode(MessageCode.SYSTEM_ERROR);
        messBean.setContent("文件导入失败");
        return messBean;
    } finally {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                logger.error("流关闭异常", e);
            }
        }
    }
    messBean.setContent("导入成功 !");
    return messBean;
}

 

转载于:https://my.oschina.net/GinkGo/blog/1555787

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值