• Java上传图片


    直接上代码了。从一个功能摘取出来的,只保留了上传图片、附件的功能

    1,上传图片按钮,样式需要调整。

    <el-form :label-position="labelPosition" label-width="140px" :model="formLabelAlign" :rules="rules" ref="ruleForm" 
       name="upfile" id="insertbid" enctype="multipart/form-data">
      <el-form-item label="图片上传(限30M)"  id="juese">
         <input  type="file"name="file" id="cgqd"    placeholder="上传" onchange="fileChange(this);" >
         <label for="cgqd" style=" height: 52px; border: 1px solid #CCCCCC; 100%;position: absolute;top: 0;color: #ccc;line-height: 52px;border-radius: 4px;text-indent: 1rem">
           <span v-if="imgishows"><i class="glyphicon glyphicon-paperclip"></i>点击上传附件</span>
           <span v-if="!imgishows" style="color: #B0B0B0;">{{filenames}}</span>
         </label>
          <p  class="zhichige">支持格式: jpg,png,JPG,PNG</p>
      </el-form-item>
      <el-button type="danger" id="fabu_s" onclick="insert()" >提交</el-button>
    </el-form>

    2,js代码,使用Vue

    function insert(){

    var form = new FormData($("#insertbid")[0]);//获取表单

    $.ajax({
    url:"",
    type:"POST",
    dataType:"text",
    data:form,
    mimeType:"multipart/form-data",
    contentType: false,
    processData: false,
    success:function(data){

    if(data === "SUCCESS"){
    alert("上传成功")
    }else{
    alert("上传失败")
    }
    },
    })
    }
    $('#cgqd').change(function(){
    if($("#cgqd")[0].files.length > 0) {
    app.imgishows = false;
    app.filenames = $("#cgqd")[0].files[0].name
    }

    });

    /*
    上传文件格式限制*/ function fileChange(target,id) { var filetypes =[".jpg",".png",".JPG",".PNG"]; var filepath = target.value; if(filepath){ var isnext = false; var fileend = filepath.substring(filepath.lastIndexOf('.')); if(filetypes && filetypes.length>0){ for(var i =0; i<filetypes.length;i++){ if(filetypes[i]==fileend){ isnext = true; break; } } } if(!isnext){ alert("不接受此文件类型!"); target.value =""; return false; } }else{ return false; } }

    3,controller

        @RequestMapping("/insert")
        @ResponseBody
        public String projectInsert(HttpServletRequest request, MultipartFile file){
            String result = "";
    
            Project project = new Project();
    
            String fileNo = UUID.randomUUID().toString().replaceAll("-", "");//图片编号
            project.setImage(fileNo);
            FileInputUtil.addFile(purchaseSimpleNoticeService,file,fileNo);//上传图片,参数1:上传图片service接口,参数2:接收的图片,参数3:图片编号
            Integer num = iProjectService.projectInsert(project);
            if(num>0){
                result = "SUCCESS";
            }else{
                result = "ERROR";
            }
            return result;
        }

    4,图片上传工具类

    package cn.ljs.util;
    
    import cn.ljs.entity.NoticeFile;
    import cn.ljs.service.PurchaseSimpleNoticeService;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 图片上传工具类
     * 
     * @author Thinkpad
     *
     */
    public class FileInputUtil {
    
        /**
         * 图片上传
         * @param purchaseSimpleNoticeService
         * @param file
         */
        public static void addFile(PurchaseSimpleNoticeService purchaseSimpleNoticeService, MultipartFile file,
                String fileNo) {
            // 保存附件,未指定盘时一般为电脑的最后一个盘
            String realUploadPath = "/image/file";
            // 建立以时间命名的文件夹
            SimpleDateFormat sdf1 = new SimpleDateFormat("/yyyy/MM/dd/");
            String datePath = sdf1.format(new Date());
            // 最终真实路径
            String realuUploadBrandPath = realUploadPath + "/doc" + datePath;
    
            String jcfileName = file.getOriginalFilename();
            String jc = null;
            String alljc = null;
            if (jcfileName.contains("\[") && jcfileName.contains("\]")) {
                jc = jcfileName.replaceAll("\[", "【");
                alljc = jc.replace("\]", "】");
            } else {
                alljc = jcfileName;
            }
            // 上传文件原始名称
            String jcoriginFileName = new Date().getTime() + "_" + alljc;
            String jcaddress = "/doc" + datePath + jcoriginFileName;
    
            // 如果路径文件夹不存在就创建
            File dir = new File(realuUploadBrandPath);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            // 新文件
            File jcFile = new File(realuUploadBrandPath + File.separator + jcoriginFileName);
            if (file.getSize() != 0) {
                // 将内存中的文件写入磁盘
                try {
                    file.transferTo(jcFile);
                } catch (IllegalStateException | IOException e) {
                    e.printStackTrace();
                }
            }
            if (file.getSize() != 0) {
                NoticeFile noticeFile = new NoticeFile();
                noticeFile.setBatch_no(fileNo);
                noticeFile.setAddress(jcaddress);
                noticeFile.setCreate_time(new Date());
                noticeFile.setName(alljc);
                String suffix = alljc.substring(alljc.length() - 4, alljc.length());
                noticeFile.setSuffix(suffix);
                purchaseSimpleNoticeService.addFlie(noticeFile);
            }
        }
    
        /**
         * 附件修改
         * @param purchaseSimpleNoticeService
         * @param file
         */
        public static void updateFile(PurchaseSimpleNoticeService purchaseSimpleNoticeService,
                MultipartFile file, String fileNo) {
            // 保存附件
            String realUploadPath = "/fphome/sotcbb/webapps/gzfppt/file";
            // 建立以时间命名的文件夹
            SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
            String datePath = sdf.format(new Date());
            // 最终真实路径
            String realuUploadBrandPath = realUploadPath + "/doc" + datePath;
            if (file.getSize() != 0) {
                String jcfileName = file.getOriginalFilename();
                String jc = null;
                String alljc = null;
                if (jcfileName.contains("\[") && jcfileName.contains("\]")) {
                    jc = jcfileName.replaceAll("\[", "【");
                    alljc = jc.replace("\]", "】");
                } else {
                    alljc = jcfileName;
                }
                // 上传文件原始名称
                String jcoriginFileName = new Date().getTime() + "_" + alljc;
                String jcaddress = "/doc" + datePath + jcoriginFileName;
                // 如果路径文件夹不存在就创建
                File dir = new File(realuUploadBrandPath);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                // 新文件
                File jcFile = new File(realuUploadBrandPath + File.separator + jcoriginFileName);
                // 将内存中的文件写入磁盘
                try {
                    file.transferTo(jcFile);
                } catch (IllegalStateException | IOException e) {
                    e.printStackTrace();
                }
    
                String batch_no = fileNo;
                NoticeFile noticeFile = purchaseSimpleNoticeService.findFile(batch_no);
                if (noticeFile == null) {
                    NoticeFile noticeFile2 = new NoticeFile();
                    noticeFile2.setBatch_no(batch_no);
                    noticeFile2.setAddress(jcaddress);
                    Date create_time = new Date();
                    noticeFile2.setCreate_time(create_time);
                    noticeFile2.setName(alljc);
                    String suffix = alljc.substring(alljc.length() - 4, alljc.length());
                    noticeFile2.setSuffix(suffix);
                    purchaseSimpleNoticeService.addFlie(noticeFile2);
                } else {
                    noticeFile.setAddress(jcaddress);
                    noticeFile.setName(alljc);
                    String suffix = alljc.substring(alljc.length() - 4, alljc.length());
                    noticeFile.setSuffix(suffix);
                    purchaseSimpleNoticeService.updatefile(noticeFile);
                }
            }
        }
    
    }

    5,存入图片的数据库表SQL,通过BATCH_NO与project表关联

    CREATE TABLE `sys_file` (
      `BATCH_NO` varchar(32) NOT NULL COMMENT '文件批次号',
      `NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `NAME` varchar(200) DEFAULT NULL COMMENT '上传图片名字',
      `ADDRESS` varchar(200) NOT NULL COMMENT '文件地址',
      `SUFFIX` varchar(200) NOT NULL COMMENT '文件后缀名称',
      `CREATE_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
      `MID_ADDRESS` varchar(200) DEFAULT NULL COMMENT '中图路径',
      `MIN_ADDRESS` varchar(200) DEFAULT NULL COMMENT '小图路径',
      PRIMARY KEY (`NO`,`BATCH_NO`) USING BTREE,
      KEY `idx_BATCH_NO_NO` (`BATCH_NO`,`NO`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='图片表'

    6,页面查看图片,需要配置一下

    https://www.cnblogs.com/ljmm/p/13026342.html

  • 相关阅读:
    MethodDispatcher—Cherrypy对REST的支持
    httpclient上传文件
    java导出xlsx文件
    Date和String转换
    进入指定url就可下载xlsx文件
    js前端解决浏览器下载兼容性问题
    linux安装chrome浏览器
    ubuntu14.04配置java jdk
    卷积神经网络
    KMP算法
  • 原文地址:https://www.cnblogs.com/ljmm/p/13176090.html
Copyright © 2020-2023  润新知