java中上传本地图片

2023-10-30

如果你想上传多张图片:http://blog.csdn.net/xuanzhangran/article/details/54929988
如果是上传单张如下:
点击上传图片按钮,上传本地
效果如图:
1:原始图框:
原始图框
2:点击预览,弹出本地弹框:
这里写图片描述
3:选中图片点击打开/确认:
这里写图片描述
实现的代码如下:
前台代码:

<div class="row">
     <span class="personattr">身份证正面照片:</span>
     <input type="hidden" name="img"  id="thumbUrl"/>
     <input type="file" name="logoFile" id="logoFile" onchange="setImg(this);">
     <span><img id="thumburlShow" src="" width="120" height="120"/></span>
 </div>

js代码

function setImg(obj){//用于进行图片上传,返回地址
            var f=$(obj).val();
            if(f == null || f ==undefined || f == ''){
                return false;
            }
            if(!/\.(?:png|jpg|bmp|gif|PNG|JPG|BMP|GIF)$/.test(f))
            {
                alertLayel("类型必须是图片(.png|jpg|bmp|gif|PNG|JPG|BMP|GIF)");
                $(obj).val('');
                return false;
            }
            var data = new FormData();
            $.each($(obj)[0].files,function(i,file){
                data.append('file', file);
            });
            $.ajax({
                type: "POST",
                url: "/business/uploadImg.html",
                data: data,
                cache: false,
                contentType: false,    //不可缺
                processData: false,    //不可缺
                dataType:"json",
                success: function(suc) {
                    if(suc.code==0){
                            $("#thumbUrl").val(suc.message);//将地址存储好
                            $("#thumburlShow").attr("src",suc.message);//显示图片                                                              
                        }else{
                        alertLayel("上传失败");
                        $("#url").val("");
                        $(obj).val('');
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alertLayel("上传失败,请检查网络后重试");
                    $("#url").val("");
                    $(obj).val('');
                }
            });
        }

后台代码:

package com.test.business;
import com.idorabox.manage.web.util.TimeUtil;
import com.idorabox.core.utils.DateUtil;
import org.springframework.web.multipart.MultipartFile;
import org.apache.commons.io.FileUtils;
import javax.servlet.ServletContext;
import java.util.Random;
import java.io.File;
    @RequestMapping("/business")
public class BusinessAction {
    @ResponseBody
    @RequestMapping("/uploadImg.html")
    public String uploadPicture(@RequestParam(value="file",required=false)MultipartFile file,
    HttpServletRequest request){

        File targetFile=null;
        String msg="";//返回存储路径
        int code=1;
        String fileName=file.getOriginalFilename();//获取文件名加后缀
        if(fileName!=null&&fileName!=""){   
            String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() +"/upload/imgs/";//存储路径
            String path = request.getSession().getServletContext().getRealPath("upload/imgs"); //文件存储位置
            String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀
            fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;//新的文件名

            //先判断文件是否存在
            String fileAdd = DateUtil.format(new Date(),"yyyyMMdd");
            File file1 =new File(path+"/"+fileAdd); 
            //如果文件夹不存在则创建    
            if(!file1 .exists()  && !file1 .isDirectory()){       
                file1 .mkdir();  
            }
            targetFile = new File(file1, fileName);
//          targetFile = new File(path, fileName);
            try {
                file.transferTo(targetFile);
//              msg=returnUrl+fileName;
                msg=returnUrl+fileAdd+"/"+fileName;
                code=0;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return JSON.toJSONString(ResponseResult.result(code, msg));
    }
}

ResponseResult 实体类如下:
import java.util.Map;

public class ResponseResult {
    private Integer code;

    private String message;

    private Map<String, Object> result;

    public Integer getCode() {
        return this.code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return this.message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Map<String, Object> getResult() {
        return this.result;
    }

    public void setResult(Map<String, Object> result) {
        this.result = result;
    }

    private static ResponseResult responseResult;
    /**
     * 返回结果
     * @param code
     * @param message
     * @param token
     * @param map
     * @return
     */
    public static ResponseResult result(int code, String message, Map<String, Object> map){
        responseResult = new ResponseResult();
        responseResult.setCode(code);
        responseResult.setMessage(message);
        responseResult.setResult(map);
        return responseResult;
    }

    public static ResponseResult result(int code, String message){
        responseResult = new ResponseResult();
        responseResult.setCode(code);
        responseResult.setMessage(message);
        return responseResult;
    }

    public ResponseResult() {}

}

注意:后台代码第15行:文件的位置:你需要在你的项目的webapp下创建upload文件,upload下创建imgs文件,否则存储不成功。也就会上传失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中上传本地图片 的相关文章

  • 图像去噪的快速入门学习

    1 理论基础 数学基础 高等数学 线性代数 概率统计 矩阵论 数值分析等 信号处理 统计信号处理 统计学习理论等 2 文献资料阅读 常用的数据库 IEEE IEE Electronic Library Elsevier SpringerLi
  • Python(4) Numpy,控制台完全输出ndarray

    import numpy as np np set printoptions threshold np nan print ndarray 当ndarray里面的存放的数据维度过大时 在控制台会出现不能将ndarray完全输出的情况 中间部
  • NDIS网络数据监控程序NDISMonitor(3)-----NdisMonitro应用程序(C#)

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 1 主窗口Load函数ctrlForm Load 1 先调用GetExtensions来获得运行目录下bin目录中的所有文件 通过载入为A
  • 【maven】The forked VM terminated without saying properly

    1 概述 转载 https blog csdn net zhglance article details 53695653 一直在使用Maven开发项目 最近遇到了一个让人头疼的问题 在网上搜索竟然没有找到中文描述的解决方式 自己找了英文网
  • linux内核中GPIO的使用(一)--IO内存

    一 相关概念 使用IO内存将物理地址映射为虚拟地址 再通过对虚拟地址的操作来控制硬件 所谓的IO内存是指一种编址方式 不同cpu平台使用的编址方式不同 一种是 IO内存 方式 也叫统一编址方式 是指内存和外设的地址是在同一个地址空间上的 如
  • 手把手教你使用Segformer训练自己的数据

    使用Segformer训练自己的数据 系统配置 代码链接 针对MMCV 选择系统 Windows环境要求 ubuntu 18 04 安装swin segmentation 制作VOC 数据集 代码部分修改 开始训练 使用Transforme
  • mysql实时监控工具mytop

    mysql实时监控工具mytop mytop类似于linux top工具 可以实时监控mysql服务器的性能信息 安装依赖 yum install y perl CPAN cpan cpan gt install DBI cpan gt i
  • vmwaeESXi导出虚拟机和安装

    找到你要导出的虚拟机点击 操作 选择导出 点击 导出 导出的文件会通过浏览器下载到本地 点击创建 注册 选择 从OVF或OVA文件部署虚拟机 点下一页 输入 虚拟机名称 然后点击 单机以选择文件或拖放 以下三个文件就是导出的虚拟机 将三个文
  • docker学习:实战commit

    这里的commit是把你修改后的一个容器打包成一个镜像 这样你本地就多了一个image镜像 有什么用呢 就是你在之前的镜像上的修改连同镜像 成为一个新的image 下次你去布置启动这个修改后的镜像就不用 先下载一个镜像再修改 直接拿你这次c
  • 正则表达式作业

    利用正则表达式完成下面的操作 一 不定项选择题 能够完全匹配字符串 010 62661617 和字符串 01062661617 的正则表达式包括 ABD A r d 3 d 8 B r 0 9 C r 0 9 d D r d d 能够完全匹
  • day049:异常、throws声明异常、throw抛出异常、异常的处理方式

    接下节 day050 try catch 常见问题 throwable的成员方法 自定义异常 ZQyyds 的博客 CSDN博客 一 异常 1 什么是异常 指程序出现了不正常的情况 程序在执行过程中 出现的非正常情况 最终会导致JVM的非正
  • Java课题笔记~JSON

    3 1 概述 概念 JavaScript Object Notation JavaScript 对象表示法 如下是 JavaScript 对象的定义格式 name zhangsan age 23 city 北京 接下来我们再看看 JSON
  • 整理:学术论文发表过程中的审稿人意见答复技巧

    整理 学术论文发表过程中的审稿人意见答复技巧 更新历史 20200613 首次发布 科技论文投稿后 通常都需要答复审稿人的意见 对于审稿人的意见 不能随便敷衍 因为这会让审稿人感到不高兴 说不定转头就把论文拒了 因此 需要按照合适的方式或者
  • rsync linux间同步文件及文件夹

    有时候本地写代码想同步到另一台电脑 又不想push上git 用linux自带的rsync 工具 方便快捷 将本地的salmon目录同步到ray ubuntu电脑上 rsync av salmon ray ray ubuntu home ra
  • 关于服务器环境搭建

    前言 在很多新项目中 都会用到环境搭建的情况 今天教大家如何在服务器中部署应用的环境搭建 一 搭建环境是什么 搭建环境是指建立运行程序文件的基础环境 比如服务运行需要装什么软件都需要哪些程序 服务器的部署就是搭建环境 整理了很久 刚开始搭建
  • C++ 惯用法之 Nifty Counter

    背景 C 中全局对象的初始化在 main 函数执行前完成 在 main 函数执行结束前销毁 在同一源码文件中全局变量的初始化顺序和其定义顺序一致 但在不同的源码文件中其初始化顺序不一致 就有可能导致代码出错 一般解决方法 概述 静态局部变量
  • 计算机图形学-扫描转换直线段-直线方程法-DDA算法-中点算法-OPENGL实现-详解

    扫描转换直线段 说明与环境配置 环境配置 扫描转换直线段 方法一 直线方程法 代码描述 算法比较简单 暂无代码 方法二 数字差分分析DDA算法 代码描述 方法三 中点算法 代码描述 所有代码下载与效果展示 说明与环境配置 生成一个线段的方法
  • pthread_mutex_trylock使用

    pthread mutex trylock 是 pthread mutex lock 的非阻塞版本 如果被其他线程使用 返回其他值 如果没有被其他线程使用 那么进行加锁 并且返回0 所以可以通过这个判断是不是使用这这个锁 而不需要等待 提高
  • Django生成唯一流程单号

    class AutoSerialNumber object 创建OA单号 def init self J201906120001 self fd apply no ApplicationBasicFormModel delete objec

随机推荐

  • 网络基础IP地址

    IP地址 IP地址分类 子网划分 VLSM 超网 路由聚合 CIDR IP地址分类 A类 0开始 B类 27 128 开始 C类 27 26 192 开始 D类 27 26 25 224开始 E类 27 26 25 24 240开始 特殊I
  • 从Map中 取出第一个key/第一个value的方法

    从Map中取出第一个 key 和 value 的方法 使用Map Entry进行操作 可与LinckedHashMap 按元素存入顺序排序的有序Hash表 搭配使用 实现特定的业务要求 获取map中第一个key值 param map 数据源
  • Qemu-KVM安装

    目录 前提准备 1 虚拟机需要GNOME界面 如果是字符界面需要下载安装GNOME界面 2 安装vncviewer 3 安装xshell SecureCRT xftp WinSCP 或finalshell 一 Qemu KVM虚拟化环境搭建
  • java可用的动态脚本引擎和动态代码执行

    文章目录 1 javascript语法引擎 1 1 rhino 1 2 nashorn 1 3 j2v8 2 Java语法引擎 2 1 Groovy java的ScriptEngine脚本引擎 支持代码动态执行 代码修改后不需要重启JVM进
  • AAAI 2022 论文列表

    链接及代码之后会更新 GitHub链接 https github com gbstack AAAI 2022 papers Scaled ReLU Matters for Training Vision Transformers Picha
  • 第三章、中台实践-业务中台建设

    第三章 业务中台建设 3 1 什么事业务中台 从业务运行机制和系统开发机制两个维度 展开产生建设业务中台的主要内容 3 1 1 业务中台定义 业务中台是以业务领域划分边界 形成高内聚 低耦合的面向业务领域的能力中心 打造持续演进的企业级业务
  • JAVA实现杨辉三角的三种方式

    一 前言 既然是实现杨辉三角 就要知道什么是杨辉三角 如下图 就是两种杨辉三角 1 等边形状的杨辉三角 2 直角形状的杨辉三角 在知道这两种都是杨辉三角之后 我们就来实现利用java语言打印出杨辉三角 二 杨辉三角的规律 第n行有n个数字
  • 【Consistency Models】复现指导以及效果分析。

    Consistency Models 复现指导以及效果分析 1 先看结果 2 复现指导 3 将结果可视化 总结 1 先看结果 如果没看过论文的建议先看看总结笔记 终结扩散模型 Consistency Models OpenAI开源新模型代码
  • java截取字符串中的一部分字符,我先收藏为敬

    Spring框架自诞生以来一直备受开发者青睐 有人亲切的称之为 Spring 全家桶 Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新 很多研发人员把spring看作心目中最好的Java项目 没有之一 可以毫不夸
  • 三维气体扩散模拟matlab仿真

    目录 1 算法仿真效果 2 MATLAB源码 3 算法概述 4 部分参考文献 1 算法仿真效果 matlab2022a仿真结果如下 2 MATLAB源码 订阅用户可以获得任意一份完整代码 私信博主 留言文章链接和邮箱地址 一般第二天下午4点
  • 什么是静态变量和静态方法?如何在Java中使用它们?什么是同步和异步?如何在Java中进行同步和异步编程?什么是单元测试?如何在Java中进行单元测试?

    单元测试是一种软件测试方法 它用于测试一个软件系统的最小可测试单元 在Java中 JUnit是最常用的单元测试框架之一 它提供了一些注解和断言 可以方便地编写和运行测试用例 除了JUnit之外 Mockito也是一个非常有用的测试框架 它允
  • (转) 如何将notepad++添加到右键

    工具 原料 win 7系统 Notepad 方法 步骤 左下角点击 开始 gt 运行 gt regedit 打开注册表编辑器 在HKEY CLASSSES ROOT Shell 下 在Shell下 新建项命名为Open With Notep
  • 卧槽,做Python兼职又接了一个大单,真香

    每年的第一季度 是Python兼职接单的高潮期 近段时间 各行业对爬虫类和数分类服务的需求量呈指数级的暴增 圈子里的朋友双休都没闲着 趁着旺季接单大赚一笔 所以 最近在csdn后台咨询技术变现 兼职接单问题的朋友也越来越多 最近十天收到了六
  • 【数据库原理及应用教程(第4版

    文章目录 一 选择题 二 填空题 三 简答题 Reference 一 选择题 1 2 3 4 5 6 7 8 9 10 C B D C D B A B D B 11 12 13 14 15 16 17 18 19 20 C D A D B
  • Spring启动执行流程梳理

    注 本文梳理启动流程使用的Spring版本 4 0 2 RELEASE 使用spring配置 都需要在web xml中配置一个spring的监听器和启动参数 context param 如下
  • 基于视觉的移动平台运动目标检测

    1 声明 本文为自己的研究总结 主要根据各类文献总结而来 内容上可能有些不全面 不客观 这篇博文主要介绍的是基于视觉的移动平台运动目标检测 写这篇博文的目的主要是对自己一个阶段性总结 也希望能够帮助做这方面研究的同学 2 引言 首先 我们来
  • Nacos + Prometheus + Grafana 搭建走起~

    小伙伴们好呀 这两天在本地搭建了这个 Nacos Prometheus Grafana 主要是为了这个 nacos 填坑 然后顺便搭下这个监控中心 哈哈 文章内容比较琐碎 看完你可以了解到 怎么选择 nacos 版本 可能会踩到的坑 没错
  • 一些概念的解释

    转移支付 财政转移支付是以各级政府之间所存在的财政能力差异为基础 以实现各地公共服务水平的均等化为主旨 而实行的一种财政资金转移或财政平衡制度 用人话说 就是大家一起收税 三分留地方 七分归国家 实际上不同税种比例不同 归国家的这些国家在根
  • DELL R740服务器系统安装详细过程

    RAID配置 1 开机F2进入bios 2 选择device setting 3 Integrated Raid controller 1 xxxxxx raid 卡型号 一般是第一行 4 选择 Main Menu
  • java中上传本地图片

    如果你想上传多张图片 http blog csdn net xuanzhangran article details 54929988 如果是上传单张如下 点击上传图片按钮 上传本地 效果如图 1 原始图框 2 点击预览 弹出本地弹框 3