MultipartHttpServletRequest 多文件上传。个人demo


                         <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" οnclick="editChannel()">编辑</a>
<!-- 编辑窗口 -->
			    <div id="dlg2" class="easyui-dialog" style="width:680px;height:500px;padding:10px 20px"
			            closed="true" buttons="#dlg-buttons">
			       <form id="fm2" method="post" enctype="multipart/form-data"   novalidate>		
			            
			             <div class="fitem">
			                <label>文件导入:</label>
			                <input name="modifFile" id="modifFile"class="easyui-filebox"  style="width:200px"
	                 		data-options="prompt:'请选择文件...'"> (支持xls,csv格式文件)
			            </div>
			           
			        </form>
			    </div>
			    <div id="dlg-buttons">
			        <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" οnclick="save2Channel()" style="width:90px">保存</a>
			        <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" οnclick="javascript:$('#dlg2').dialog('close')" style="width:90px">取消</a>
			    </div>  


function editChannel(){
    var row = $('#dg').datagrid('getSelected');
    if (row){
        $('#dlg2').dialog('open').dialog('center').dialog('setTitle','编辑');
        $('#fm2').form('load',row);
        url = '/channel/update.html';
    }else{
    	$.messager.show({
            title: '提示信息',
            msg: '请选择一条记录!'
        });
    }
}
/**
 * 编辑保存
 */
function save2Channel(){
    $('#fm2').form('submit' , {
        url : '/channel/update.html',
        onSubmit: function(){
        },
        success : function(data){
            $.messager.progress('close');
            var data = eval('('+data+')');
            if (data && data.success){
                $.messager.show({
                    title: '成功信息',
                    msg: data.msg
                });
                $('#dlg2').dialog('close');        
                $('#dg').datagrid('reload');    
            } else {
                $.messager.show({
                    title: '失败信息',
                    msg: data.msg
                });
                $('#dlg2').dialog('close');        
                $('#dg').datagrid('reload');    
            }
        }
    });
    
    var win = $.messager.progress({
        title:'请稍后',
        msg:'正在上传数据...'
    });
}


///*ChannelRequest request*/ 注不能直接传请求对象
	@SuppressWarnings("unused")
	@RequestMapping("/update")
	@ResponseBody
	public Result update(HttpServletRequest request0,Integer channelId ,Character status, Character showFlag 
			,Character flag,String channelName,String fileParserName,String fileCompareName ,String importorName
			,String rule ,String sourceConfig,String schemaInfo, String processors){
		try{
			 MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request0, MultipartHttpServletRequest.class);
			 List<MultipartFile> multipartFiles = multipartRequest.getFiles("modifFile");
			if(!StringUtils.isBlank(multipartFiles.get(0).getOriginalFilename())){
				 //1 文件保存
				
				String[] filePaths = uploadFile(multipartFiles.get(0));
			}
				
			 //封装渠道信息
			 ChannelRequest request = packaging(channelId, status, showFlag, flag,
					channelName, fileParserName, fileCompareName, importorName,
					rule, sourceConfig, schemaInfo, processors);
			
			channelService.update(DatasoureFlagEnum.DATA_R_CASH.getCode(),request);
			log.info("更新渠道成功");
			return Result.success("更新渠道成功");
		}catch(Exception e){
			log.error("更新渠道失败,{}", e);
			return Result.error("更新渠道失败");
		}
	}


private String[] uploadFile(MultipartFile file1) throws Exception {
		if (null == file1 || file1.isEmpty()) {
           throw new Exception("");
        }
        if (!this.validateFile(file1, FileSuffixEnum.JAR,FileSuffixEnum.ZIP)) {
        	throw new Exception("文件需为 jar, zip类型");
        }
      
        
		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.channelUploadFile(file1.getBytes(), origFileName);
		
		
		return new String[]{filePath1,origFileName};
	}


/**
	 * @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;
	}

Service

	@Override
	public String channelUploadFile(byte[] data, String fileName) {
		
		String fileDir=null;
		try {
			//File.separator 
			 fileDir = ConfigFiles.deployPath;
			File file = new File(fileDir +File.separator+ fileName);
			if (!file.exists()) {
				// 如果存在,修改文件修改时间
				//FileUtils.touch(file);
				FileUtils.writeByteArrayToFile(file, data);
			}else {
				file.delete();
				// 如果存在,修改文件修改时间
				//FileUtils.touch(file);
				FileUtils.writeByteArrayToFile(file, data);
			}
		} catch (Exception e) {
			LOGGER.error("文件上传失败", e);
			throw new RuntimeException("文件上传失败");
		}
		return  fileDir + File.separator + fileName;
	}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值