文件上传入库方式1

来源:互联网 发布:供应链网络优化 编辑:程序博客网 时间:2024/05/27 21:04


直接上代码

jsp 代码

<!-- 创建窗口 --><div id="dlg" class="easyui-dialog" style="width:380px;height:280px;padding:10px 20px"closed="true" buttons="#dlg-buttons"><form id="fm" method="post" enctype="multipart/form-data" novalidate><div class="fitem"><label>渠道:</label><input id="group_code" class="easyui-combobox" name="channelId" panelHeight="auto" style="width:200px" data-options="valueField : 'channelId',textField : 'channelName',url : '/task/loadOption.html'"></div><div class="fitem"><label>后台文件导入:</label>(支持xls,csv格式文件)<input name="file" class="easyui-filebox" style="width:200px"data-options="prompt:'请选择文件...'"></div><div class="fitem"><label>网关文件导入:</label>(支持xls,csv格式文件)<input name="bankFile" class="easyui-filebox" style="width:200px"data-options="prompt:'请选择文件...'"></div></form></div><div id="dlg-buttons"><a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveTask()" style="width:90px">保存</a><a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">取消</a></div> 

<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newTask()">创建</a>






js.代码

var url;function newTask(){    $('#dlg').dialog('open').dialog('center').dialog('setTitle','新增');    $('#fm').form('clear');    url = '/taskManager/save.html';}/** * 保存 */function saveTask(){$('#fm').form('submit' , {        url : '/taskManager/save.html',        onSubmit: function(){        },        success : function(data){        $.messager.progress('close');        var data = eval('('+data+')');        if (data && data.success){                $.messager.show({                    title: '成功信息',                    msg: data.msg                });                $('#dlg').dialog('close');                    $('#dg').datagrid('reload');                } else {            $.messager.show({                    title: '失败信息',                    msg: data.msg                });                $('#dlg').dialog('close');                    $('#dg').datagrid('reload');                }        }    });var win = $.messager.progress({        title:'请稍后',        msg:'正在上传数据...'    });}


后台taskManager:controller层

参数标识

String channelId 渠道id String dateStart,起始时间String dateEnd   结束时间

@RequestMapping("/save" )@ResponseBodypublic Result save(//@RequestParam(value ="file", required = true) MultipartFile file1,//@RequestParam(value ="bankFile", required = true) MultipartFile file2,HttpServletRequest request0,String channelId,String dateStart,String dateEnd ){try{TaskRequest request = new TaskRequest(); MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request0, MultipartHttpServletRequest.class); List<MultipartFile> multipartFiles = multipartRequest.getFiles("file"); List<MultipartFile> bank_multipartFiles = multipartRequest.getFiles("bankFile");if(CollectionUtils.isNotEmpty(multipartFiles) && CollectionUtils.isNotEmpty(bank_multipartFiles)){//1 文件保存String[] filePaths = uploadFile(multipartFiles.get(0),bank_multipartFiles.get(0));//2 持久化 task和文件路径 request.setChannelId(Integer.valueOf(multipartRequest.getParameter("channelId")));request.setStatisticData("0");request.setStatus("50");request.setChannelId(Integer.valueOf(channelId));request.setChargeFilePath(filePaths[0]);request.setBankFilePath(filePaths[1]);request.setChargeFileName(filePaths[2]);request.setBankFileName(filePaths[3]);String queryCondition=dateStart+"/"+dateEnd;if(StringUtils.isBlank(dateEnd)||StringUtils.isBlank(dateStart)){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String str=sdf.format(Calendar.getInstance().getTime());queryCondition=str+"/"+str;}request.setQueryCondition(queryCondition);taskService.save(DatasoureFlagEnum.DATA_R_CASH.getCode(),request);log.info("新增任务成功");return Result.success("新增任务成功",null);}else{return Result.error("缺少必要的文件");}}catch(Exception e){log.error("新增任务失败",e);return Result.error("创建任务时候异常:"+e.getMessage());}}


private String[] uploadFile(MultipartFile file1, MultipartFile file2) throws Exception {if (null == file1 || file1.isEmpty()|| null ==file2 || file2.isEmpty()) {           throw new Exception("");        }        if (!this.validateFile(file1, FileSuffixEnum.XLS, FileSuffixEnum.XLSX, FileSuffixEnum.CSV)) {        throw new Exception("文件需为 xls, xlsx, cvs类型");        }        if (!this.validateFile(file2, FileSuffixEnum.XLS, FileSuffixEnum.XLSX, FileSuffixEnum.CSV)) {        throw new Exception("文件需为 xls, xlsx, cvs类型");        }        // 文件大小限制:不能超过3M        if (Long.compare(file1.getSize(), EXCEL_SIZE_LIMIT) > 0) {        throw new Exception("文件大小不能超过3M!");        }                //获取文件名                String origFileName = file1.getOriginalFilename();//起始日期                String dataStr = DateUtil.getCurDate();String chargeFileName=origFileName+"("+dataStr+")";String fileName = UUID.randomUUID().toString().replaceAll("-", "");fileName = fileName + origFileName.substring(origFileName.lastIndexOf('.'), origFileName.length());String filePath1 = batchContentService.uploadFile(file1.getBytes(), fileName);origFileName = file2.getOriginalFilename();String BankFileName=origFileName+"("+dataStr+")";fileName = UUID.randomUUID().toString().replaceAll("-", "");fileName = fileName + origFileName.substring(origFileName.lastIndexOf('.'), origFileName.length());String filePath2 = batchContentService.uploadFile(file2.getBytes(), fileName);return new String[]{filePath1, filePath2,chargeFileName,BankFileName};}


/** * @description 校验上传文件的后缀 * @param file * @param enums * @return */protected boolean validateFile(MultipartFile file, FileSuffixEnum... enums) {try {if (file == null || file.isEmpty()) {return false;}for (FileSuffixEnum t : enums) {if (StringUtils.equals(t.name().toUpperCase(), FilenameUtils.getExtension(file.getOriginalFilename()).toUpperCase())) {return true;}}} catch (Exception e) {log.error(e.getMessage(), e);}return false;}
batchContentService层       //上传文件@Overridepublic String uploadFile(byte[] data, String fileName) {String monthStr = DateUtil.getCurMonth();try {String fileDir = rootDir  + "/" + monthStr;File file = new File(fileDir + File.separator + fileName);if (!file.exists()) {//FileUtils.forceMkdir(new File(fileName));FileUtils.touch(file);FileUtils.writeByteArrayToFile(file, data);}} catch (Exception e) {LOGGER.error("文件上传失败", e);throw new RuntimeException("文件上传失败");}return  rootDir + "/" + monthStr + File.separator + fileName;}

TaskService层@Overridepublic void save(@DataSource(field="rCashId")Integer rCashId, TaskRequest request) {taskMapper.insert(DozerUtil.map(request,TaskEntity.class));}