SSM单文件上传

1.在自己已经构建好的maven web项目中 pom.xml配置文件中添加上传下载所需要的jar包

 <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

2.在spring的applicationContext.xml配置文件中添加文件上传解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
     <property name="defaultEncoding" value="utf-8"></property>    
     <property name="maxUploadSize" value="5242440"></property>    
</bean>

3.前台页面

                <div class="form-row">
                    <div class="col-md-3 tar">
                        <span class="iconBtx">*</span>上传资源
                    </div>
                    <div class="col-md-9">
                        <input type="file" name="file" id="resource"  />
                    </div>
                </div>
                <div class="form-row">
                    <div class="col-md-3 tar">
                        <span class="iconBtx">*</span>缩略图&nbsp;&nbsp;
                    </div>
                    <div class="col-md-9">
                        <input type="file" name="file" id="cover"
                               accept="image/jpg,image/jpeg,image/gif,image/png,image/bmp"/>
                    </div>
                </div>

4.js

 		if ($("#resource").val() == "") {
            swal({title: "请选择文件!", type: "info"});
            return;
        }
        var formData = new FormData();
        var resource = document.getElementById("resource");
        formData.append("file", resource.files[0]);
        var resource = $("#resource").val();
        var resource_end =resource.split(".");

        if( resource_end[1]=='bat'|| resource_end[1]=="exe"){
            swal({title: "不可上传可执行文件!", type: "info"});
            return;
        }

        var coverRemark = "false";

        if(null == $("#cover").val()  || $("#cover").val() == "" ){
            formData.append("cover", resource.files[0]);
            coverRemark = "false";
        }else{
            var cover = document.getElementById("cover");
            formData.append("cover", cover.files[0]);
            coverRemark = "true";
        }
   $.ajax({
            url:'<%=request.getContextPath()%>/resourcePublic/addPublic' +
            '?resourceName='+resourceName+
            '&resourceType='+resourceType +'&resourceSubjectId='+resourceSubjectId +'&resourceMajorId='+resourceMajorId+
            '&resourceCourseId='+resourceCourseId +'&resourceFormat='+resourceFormat +'&remark='+remark+'&coverRemark='+coverRemark,
            type:"post",
            processData:false,
            contentType:false,
            data:formData,
            success:function(msg){
                hideSaveLoading();
                swal({
                    title: msg.msg,
                    type: "success"
                });
                $("#dialog").modal('hide');
                $('#tableResource').DataTable().ajax.reload();
            }
        });

5.后台代码

  @ResponseBody
    @RequestMapping("/resourcePublic/addPublic")
    public Message addPublic(@RequestParam("resourceName") String resourceName,
                             @RequestParam("resourceType") String resourceType,
                             @RequestParam("resourceSubjectId") String resourceSubjectId,
                             @RequestParam("resourceMajorId") String resourceMajorId,
                             @RequestParam("resourceCourseId") String resourceCourseId,
                             @RequestParam("resourceFormat") String resourceFormat,
                             @RequestParam("remark") String remark,
                             @RequestParam("coverRemark") String coverRemark,
                             @RequestParam(value = "file") CommonsMultipartFile file,
                             @RequestParam(value = "cover") CommonsMultipartFile coverfile) {
        String resourceId = CommonUtil.getUUID();
        String name = file.getFileItem().getName();
        String type = name.substring(name.lastIndexOf(".") + 1);
        try {
            InputStream in = file.getInputStream();
            byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据
            String uploadFilePath = new File(getClass().getResource("/").getPath()).getParentFile().getParent()
                    .toString();

            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time = format.format(date);
            String Path = "/resourcefiles/ZYK_RESOURCE_PUBLIC/" + time + "/";

            File tempFile = new File(uploadFilePath + Path);

            if (!tempFile.exists()) {
                tempFile.mkdirs();
            }
            FileOutputStream fos = new FileOutputStream(uploadFilePath + Path + resourceId + "." + type);
            byte[] buffer = new byte[8192]; // 每次读8K字节
            int count = 0;
            // 开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中
            while ((count = in.read(buffer)) > 0) {
                fos.write(buffer, 0, count); // 向服务端文件写入字节流
            }
            fos.close(); // 关闭FileOutputStream对象
            in.close(); // InputStream对象

    /*        if (".avi.wmv.mpeg.mov.mkv.flv.f4v.m4v.rmvb.rm.3gp.dat.ts.mts.vob.".indexOf("." + type + ".") != -1) {
                Transcoding.transcoding(uploadFilePath + Path + resourceId + "." + type, uploadFilePath + Path +
                        resourceId);
            }*/

            ResourceFiles uploadFiles = new ResourceFiles();
            if (coverRemark.equals("true")) {
                InputStream inCover = coverfile.getInputStream();
                String nameCover = coverfile.getFileItem().getName();
                String typeCover = nameCover.substring(nameCover.lastIndexOf(".") + 1);

                FileOutputStream fosCover = new FileOutputStream(uploadFilePath + Path + resourceId + "Cover." +
                        typeCover);
                byte[] bufferCover = new byte[8192]; // 每次读8K字节
                int countCover = 0;
                // 开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中
                while ((countCover = inCover.read(bufferCover)) > 0) {
                    fosCover.write(bufferCover, 0, countCover); // 向服务端文件写入字节流
                }
                fosCover.close(); // 关闭FileOutputStream对象
                inCover.close(); // InputStream对象
                uploadFiles.setCoverUrl(Path + resourceId + "Cover." + typeCover);
                uploadFiles.setCoverType(typeCover);
            } else {
                uploadFiles.setCoverUrl( ResourcelibraryCommonUtil.getFilesThumbnailURL(resourceFormat, type) );
            }

            long fileSize = file.getSize();
            uploadFiles.setFileSize(fileSize + "");
            uploadFiles.setFileId(resourceId);
            uploadFiles.setFileName(name);
            uploadFiles.setFileType(type);
            uploadFiles.setFileUrl(Path + resourceId + "." + type);
            uploadFiles.setBusinessId(resourceId);
            uploadFiles.setTablename("ZYK_RESOURCE_PUBLIC");
            uploadFiles.setCreator(CommonUtil.getPersonId());
            uploadFiles.setCreateDept(CommonUtil.getLoginUser().getDefaultDeptId());
            resourceFilesService.saveResourceFiles(uploadFiles);

            DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
            String time1 = format1.format(date);

            ResourcePublic resourcePublic = new ResourcePublic();
            resourcePublic.setResourceName(resourceName);
            resourcePublic.setResourceType(resourceType);
            resourcePublic.setResourceSubjectId(resourceSubjectId);
            resourcePublic.setResourceMajorId(resourceMajorId);
            resourcePublic.setResourceCourseId(resourceCourseId);
            resourcePublic.setResourceFormat(resourceFormat);
            resourcePublic.setRemark(remark);
            resourcePublic.setResourceId(resourceId);
            CommonUtil.save(resourcePublic);
            resourcePublic.setPublicPersonId(CommonUtil.getPersonId());
            resourcePublic.setPublicDeptId(CommonUtil.getDefaultDept());
            resourcePublic.setPublicTime(time1);
            resourcePublic.setPublicFlag("1");
            resourcePublic.setClassicFlag("0");
            resourcePublicService.saveResourcePublic(resourcePublic);

            ResourceOperateLog resourceOperateLog = new ResourceOperateLog();
            resourceOperateLog.setResourceId(resourceId);
            resourceOperateLog.setBusinessId(resourceId);
            resourceOperateLog.setLogId(CommonUtil.getUUID());
            CommonUtil.save(resourceOperateLog);    // zyk_resource_public
            resourceOperateLog.setResourceTablename("ZYK_RESOURCE_PUBLIC");
            resourceOperateLog.setOperateType("1");
            resourceOperateLogService.saveResourceOperateLog(resourceOperateLog);

            return new Message(1, "上传成功!如果文件需要转码,请稍后查看。", resourceId);
        } catch (IOException e) {
            e.printStackTrace();
            return new Message(0, "上传失败!", "error");
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值