文件上传——java后台代码

   最近,要测试文件上传API,文件上传的东西还挺多的。

要测试,首先得有后台吧,所以,简单搭了个springMVC,引入必要的jar包,然后写了个文件上传接口。

    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public ResponseResult uploadFiles(HttpServletRequest request) {
        ResponseResult result = new ResponseResult();
        // 获取前台传递的userId参数
        String userId = request.getParameter("userId");
        // 多文件上传处理类
        MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
        // 这里循环处理上传的文件
        for (Iterator<String> it = multiRequest.getFileNames(); it.hasNext(); ) {
            // 上传文件列表的key信息
            String fileKey = it.next();
            // 获取上传的文件信息
            MultipartFile multipartFile = multiRequest.getFile(fileKey);
            // 判断文件是否为空
            String sourceFileName = multipartFile.getOriginalFilename();
            if (sourceFileName == null || sourceFileName.length() == 0) {
                // 获取到文件为空,这里不允许上传空文件
                //result.setStatus(StatusType.FAILURE);
                //result.setMsg(MsgType.ERROR_UPLOAD_FILE_IS_EMPTY.getMsg());
                return result;
            }
            // 上传文件名称
            String uploadFileName = sourceFileName.substring(0, sourceFileName.lastIndexOf("."));
            // 上传文件类型
            String uploadFileType = sourceFileName.substring(sourceFileName.lastIndexOf("."));
            // 上传文件时间
            long uploadTime = System.currentTimeMillis();
            // 保存的文件名称(这里设置为上传的文件名_时间戳)
            String tempFileName = uploadFileName + "_" + uploadTime;
            // 获取用户上传路径 temp/upload/userId/dateStr/fileName
            File uploadFileSave = new File(ConfigUtils.MBSDATA_TEMP_UPLOAD + File.separator + userId + File.separator + StringHelper.parseDate(uploadTime) + File.separator + tempFileName + uploadFileType);
            // 父目录不存在,则需要先创建
            if (!uploadFileSave.getParentFile().exists()) {
                boolean createDirResult = uploadFileSave.getParentFile().mkdirs();
                if (!createDirResult) {
                    // 创建父目录失败,后续肯定也无法保存文件
                    //result.setStatus(StatusType.FAILURE);
                    //result.setMsg(MsgType.ERROR_UPLOAD_TO_SAVE.getMsg());
                    return result;
                }
            }
            try {
                // 转存文件到上传文件路径/userId/fileName
                multipartFile.transferTo(uploadFileSave);
                // 文件操作自己处理
                // TODO
            } catch (Exception e) {
                // 上传出现存储问题,直接返回
                //result.setMsg(MsgType.ERROR_UPLOAD_TO_SAVE.getMsg(sourceFileName));
                //result.setStatus(StatusType.FAILURE);
                return result;
            }
        }
        // 完成上传
        //result.setMsg(MsgType.SUCCESS_OPT_ADD.getMsg());
        //result.setStatus(StatusType.SUCCESS);
        return result;
    }
}
还是报错,需要引入相关文件上传jar包。

	<!-- 文件上传   最大100M-->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize">
			<value>104857600</value>
		</property>
		<property name="maxInMemorySize">
			<value>4096</value>
		</property>
		<property name="defaultEncoding">
			<value>UTF-8</value>
		</property>
	</bean>

引入两个额外的jar包,一个是common-io-2.2.jar,另一个是commons-fileupload-1.3.1.jar,将这个两个jar 包导入WEB-INF/lib目录里

在tomcat里面启动,然后postman调用,在相关目录下可以找到上传的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值