精华内容
下载资源
问答
  • 数据库存图片

    千次阅读 2019-06-25 15:54:13
    所谓数据库存图片,并不能真的将照片存入。解释如下: 图一 如上图属性pimage所示,其中的图片存入的仅仅是一个网站的部分路径 ...

    所谓数据库存图片,并不能真的将照片存入。解释如下:

                                                                                                    图一

    如上图属性pimage所示,其中的图片存入的仅仅是一个网站的部分路径

                                                                                                    图二

    上图jsp文件中通过newPro.pimage来进行图片路径的索引(图片实际是存在服务端的文件夹中),然后在图一中的pimage的属性中可以看到image/d.jpg(实际就是图片存在服务端文件路径),如下图上所示:

                                       

                                                                                                    图三

    部分代码实现的效果如上图显示

     

    展开全文
  • 本例子是从前台拿到图片和其他信息之后把图片用java通过流的方式存到项目的某个目录下,然后把路径存到数据库里,如果用base64的形式来存图片的话数据量比较大,不好读取。故采用这种方法。 代码 代码解析: 1. ...

    写在前面

    本例子是从前台拿到图片和其他信息之后把图片用java通过流的方式存到项目的某个目录下,然后把路径存到数据库里,如果用base64的形式来存图片的话数据量比较大,不好读取。故采用这种方法。

    代码

    代码解析:

    1. AjaxResult 是一个与ajax对接的实体类,Region 是要存到数据库的实体类
    2. String  path = ClassUtils.getDefaultClassLoader().getResource("").getPath();这一句代码是获取到了target目录的根目录,而我们的图片如果只存到target目录下,那么每次重启项目更新资源的时候我们之前存的图片就会被删除掉,所以需要我们自己来安排存储路径。
    3. path = path.split("/target")[0];//分割路径,拿到target前面的路径
            path = path.substring(1);//拿到的路径最前面会带一个/,去掉它
            path = path+"/src/main/resources/static/images/region";//后面拼接上我们想存的路径
    4. 这里我存了两个地方,一个是存到项目的static下面,一个是存到target里面,如果不存到target里面,那么存完之后想要看的话只能重启项目,存两个地方的话我们只需要刷新一下页面就可以了
    
     @PostMapping("add")
        @ResponseBody
        public AjaxResult add(Region region,@RequestParam(value = "imgFile",required = false) MultipartFile multipartFile) throws IOException {
    
            //设置图片相关
            if(multipartFile != null){
                InputStream fileStream = multipartFile.getInputStream();
                //UUID生成一个随机号码,作为文件的名字
                String realFileName = UUID.randomUUID().toString()+"-img.jpg";
                //项目图片存放路径
                String  path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
                //target路径
                String  path2 = ClassUtils.getDefaultClassLoader().getResource("").getPath()+"static/gameImg/";
                path2 = path2.substring(1);
                path = path.split("/target")[0];
                path = path.substring(1);
                path = path+"/src/main/resources/static/images/region";
                System.out.println(path);
                System.out.println(path2);
                File file = new File(path,realFileName);
                File file2 = new File(path2,realFileName);
                System.out.println(file.getAbsolutePath());
                System.out.println(file2.getAbsolutePath());
                if(!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
                if(!file2.getParentFile().exists()) {
                    file2.getParentFile().mkdirs();
                }
                OutputStream out = new FileOutputStream(file);
                OutputStream out2 = new FileOutputStream(file2);
                //创建字节缓存
                byte[] buffer = new byte[1024];
                int len = -1;
                //一次读取1kb(1024byte),返回-1表明读取完毕
                while((len = fileStream.read(buffer))!=-1) {
                    //一次写入1kb(1024byte)
                    out.write(buffer,0, len);
                }
                byte[] buffer2 = new byte[1024];
                int len2 = -1;
                //一次读取1kb(1024byte),返回-1表明读取完毕
                while((len2 = fileStream.read(buffer2))!=-1) {
                    //一次写入1kb(1024byte)
                    out2.write(buffer2,0, len2);
                }
                //冲刷流资源
                out.flush();
                //关闭流
                out.close();
                //冲刷流资源
                out2.flush();
                //关闭流
                out2.close();
                fileStream.close();
                region.setRegionImg("/images/region/"+realFileName);
            }
            return toAjax(regionService.save(region));
        }
    

    AjaxResult类:

    package com.mbyte.easy.common.web;
    
    import java.util.HashMap;
    
    public class AjaxResult extends HashMap<String, Object>
    {
        private static final long serialVersionUID = 1L;
    
        /**
         * 初始化一个新创建的 Message 对象
         */
        public AjaxResult()
        {
        }
    
        /**
         * 返回错误消息
         * 
         * @return 错误消息
         */
        public static AjaxResult error()
        {
            return error(0, "操作失败");
        }
    
        /**
         * 返回错误消息
         * 
         * @param msg 内容
         * @return 错误消息
         */
        public static AjaxResult error(String msg)
        {
            return error(500, msg);
        }
    
        /**
         * 返回错误消息
         * 
         * @param code 错误码
         * @param msg 内容
         * @return 错误消息
         */
        public static AjaxResult error(int code, String msg)
        {
            AjaxResult json = new AjaxResult();
            json.put("code", code);
            json.put("msg", msg);
            return json;
        }
    
        /**
         * 返回成功消息
         *
         * @param object 内容
         * @return 成功消息
         */
        public static AjaxResult success(Object object)
        {
            AjaxResult json = new AjaxResult();
            json.put("data", object);
            json.put("code", 1);
            return json;
        }
    
        /**
         * 返回成功消息
         * 
         * @param msg 内容
         * @return 成功消息
         */
        public static AjaxResult success(String msg)
        {
            AjaxResult json = new AjaxResult();
            json.put("msg", msg);
            json.put("code", 1);
            return json;
        }
        
        /**
         * 返回成功消息
         * 
         * @return 成功消息
         */
        public static AjaxResult success()
        {
            return AjaxResult.success("操作成功");
        }
    
        /**
         * 返回成功消息
         * 
         * @param key 键值
         * @param value 内容
         * @return 成功消息
         */
        @Override
        public AjaxResult put(String key, Object value)
        {
            super.put(key, value);
            return this;
        }
    }
    
    

    前台代码

    <input type="file" id="test-image-file" name="imgFile" accept="image/gif, image/jpeg, image/png, image/jpg">
    
    展开全文
  • 数据库存图片,是存图片名称?还是存图片路径??问题如上,之所以会有这么个疑问,目前图片是在本地服务器上存的,但是以后若是业务规模扩大,那图片肯定是要迁移到云存储服务上的,那个时候图片路径会改动,我怕...

    数据库存图片,是存图片名称?还是存图片路径??

    问题如上,之所以会有这么个疑问,目前图片是在本地服务器上存的,但是以后若是业务规模扩大,那图片肯定是要迁移到云存储服务上的,那个时候图片路径会改动,我怕原有网站图片显示,全部挂掉…。

    不知道,大家存图片到数据库的时候,是存图片名称(test.jpg) 还是 存图片路径(一般都是 /Data/UploadImage/2017-04-14/test.jpg)??

    存图片名称的话,以后,路径改动,直接修改图片路径的代码就解决了。

    存图片路径的话,以后,路径改动,要更新数据库中所有图片的路径才能够解决。

    不知道你们在上传图片后,保存图片的时候,是怎样保存的呢??

    回答

    习惯了

    路径、名称、后缀 分开存,然后有一个字段是完整url,即把以上所有连起来

    从你的问题看,既然刚开始就在数据库存储图片的相对路径就好了,以后要存第三方图片服务的话,到时就写脚本批量替换成第三方的图片地址就可以了,如果想一步到位的话,现在就可以使用第三方的图片服务的

    这个一般都是在自己的数据库中存储图片路径,要是图片多了,得占用多少空间呀。真实图片可以存储在第三方平台,如七牛等。实现思路是:先上传到七牛云服务器,获取到存储的路劲,然后保存到自己数据库中。

    存图片现在常规做法是:图片资源统一上传至图片服务器,然后保存图片路径,如果数据量非常大,可以根据Hash值进行分表存储。使用在项目中的话,全部走images.xxx.com/路径.png 的方式加载图片。另,如果不使用图片服务器,走专门的域名的话,可以在网站根目录简历一个resource资源文件夹,全部存放到这里,所有使用路径的地方都使用“/”,从根目录找起,方便迁移,也不会出路径问题。

    如果存自己服务器的话,数据库存相对路径! 如果迁移了或者换了域名也不重要,直接更改域名即可,其它都不用管,如果你存全路径,换域名IP 那就惨了!

    如果存第三方都会返回一个ID给你直接存这个ID就好了,到时候请求这个ID拿到你想要的图片即可!

    如果是本地服务器上的图片,那么就存相对与你项目根目录的路径(如/upload/20170413/xxxx.png),这样有两个好处:1.你前端引用的时候可以直接用(前提是你的nginx之类的配置根就是你项目路径)。2.在你项目迁移的时候能够直接迁移,不会有大问题。

    如果是第三方的地址,那么就直接存完整的地址了(比如http://img.xxx.xx.qiniu.com/x…),第三方的你干预不了什么,也不会有地址迁移的说法。

    展开全文
  • 数据库存有一字段,此字段包含文字和一些图片路径,如何在页面显示文字的同时显示图片,如何去做?? [b]问题补充:[/b] 数据库存有一字段,此字段包含文字和一些图片路径,如何在页面显示文字的同时显示图片,如何去...
  • String path = ... //这是数据库存的一个图片链接 在浏览器可以直接打开 Image img = ImageIO.read(new File(path)); //这里报错 这个path的格式要怎么写
  • 由于项目特殊性为使用者分别本地部署,无固定服务器,且截图数量有限可控,于是没用更合理的数据库存路径形式而是直接将图片以blob格式存入库 Screenshot.java public class Screenshot { private Integer id; ...

    有存截图并查看的需求。由于项目特殊性为使用者分别本地部署,无固定服务器,且截图数量有限可控,于是没用更合理的数据库存路径形式而是直接将图片以blob格式存入库

    Screenshot.java

    public class Screenshot {
        private Integer id;
        private String sceneid;
        private byte[] photo;
    }
    

    ScreenshotMapper.java

    @Select("SELECT * FROM `screenshot` WHERE sceneid = #{sceneid}")
        Screenshot select(String sceneid);
    

    ScreenshotService.java

    public byte[] getScreenshot(String sceneid){
            return screenshotMapper.select(sceneid).getPhoto();
        }
    

    ScreenshotController.java

    @RequestMapping("screenshot")
        public void showScreenshot(@RequestBody String sid, HttpServletResponse response) throws IOException {
            // 处理前端传入的json参数
            JSONObject jsonData = JSONObject.fromObject(sid);
            String scene = jsonData.get("sid").toString();
            // 设置contenttype为blob
            response.setContentType("blob");
            byte[] screenshot = screenshotService.getScreenshot(scene);
            response.getOutputStream().write(screenshot);
            response.flushBuffer();
        }
    

    vue

    this.axios.post(
            '/api/scene/screenshot',
            { sid: row.id },
            { responseType: 'blob' }
          ).then((response) => {
            // console.log(response)
            //console.log(typeof (response.data))
            const blob = new Blob([response.data], { type: 'image/png' })
            // 新页面显示的写法
            const link = document.createElement('a')
            link.href = window.URL.createObjectURL(blob)
            link.target = 'blank'
            link.click()
            // 本页面显示的写法
            this.imgUrl = URL.createObjectURL(response.data)
          })
    

    要点1:必须发post请求,且将responseType设为blob
    前端接到的response必须是blob格式,get请求返回的responseType会被处理成string

    要点2:const blob = new Blob([response.data], { type: ‘image/png’ })设置为图片
    缺少这个blob会默认直接输出二进制流

    要点3:URL.createObjectURL(blob)将blob转为url,赋给图片的src

    参考链接:vue axios(下载文件流)设置返回值类型responseType:'blob’无效的问题
    最初踩坑的时候console报错让我以为是对blob的处理方式不对,看了链接之后意识到是返回的类型不对不是blob,但不是因为mock而是因为请求方式

    展开全文
  • 我的意思是,这个src="图片路径",这个"图片路径"是怎么从jsonReader里面取出来的~ [b]问题补充:[/b] _jsonReader.photo _jsonReader["photo"] _jsonReader.jsonData.photo 都是undefined [b]问题补充:[/b] ...
  • 本人做了一个上传图片的操作,上传的路径是绝对路径比方说 F:\image\a.jpg。...数据库存的是相对路径比方说image\a.jpg。修改tomcat显示绝对路径后,绝对路径可以。但是jsp页面显示的相对路径图片不行。
  • 1struts2+xwork2 2eclipse里,部署项目时,部署路径选择...5疑惑就是,上传文件只能向tomcat服务器上传,因为我只能往数据库存相对路径,绝对路径src显示不出来,但是tomcat一重新发布,那些图片又都清空了,求解决方案
  • js代码(数据库存的是图片名,图片存储在服务器文件夹中): var pathName=document.location.pathname; var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); $(".viewUser").on("click...
  • 想做一个简单的发发内容,用户可以上传图片和文字,服务端也能接受文字,并且文字和图片路径(http://ip地址/项目名/图片名)的格式都存到数据库里面了,用户请求后服务器返回的是json格式,图片路径数据库存的...
  • 昨天我们学习了如何抓取商品规格、价格、库存等信息,今天我们学习如何使用GetXPathW()和GetWebContentByXPathW()函数抓取商品标题、跨境包裹重量、体积信息。如下图所示,需抓取商品标题抓取跨境包裹重量、单位重量...
  • 通用商品库存管理系统 功能描述: (1)商品管理:添加商品类别,商品类别维护,添加商品信息,商品信息维护。 (2)入库管理:登记商品入库... //图片路径配置 请修改上面的路径,使用你网站的绝对路径,这样就运行ok!
  • 存查图片

    2019-05-28 10:25:57
    有时项目需求,需要存图片和查图片,这里存进数据库的是图片,所以存时尽量小容量的图片,因为一般数据库存的是路径图片代码 public static void Insert() throws FileNotFoundException { try { Cla...
  • 图书库存管理系统

    2013-06-01 23:05:09
    放一个图片控件,并引入一个图片, 2:制作系统主控界面,FROM2(MAINFROM。FRM) 在穿体中放5个形状控件,shape1,shape2,shape3,shape4,shape5 还有个5个标签控件,在放一个标签控件,用于返回启动画面 在放一...
  • 数据库存的是图片路径,静态资源也配置了,浏览器还是看不到图片,MyEclipse里可以看到图片,jsp也是可以取到图片路径的![图片](https://img-ask.csdn.net/upload/201705/09/1494291808_644210.jpg)![图片]...
  • 做商品修改时,想显示商品的图片数据库存了商品的路径,怎样动态显示商品图片,显示以后,怎么修改图片呢?![图片说明](https://img-ask.csdn.net/upload/201612/01/1480557340_364422.png)
  • 将数据库中的一些流文件或者图片通过打包批量下载,我的项目直接在数据库存的路劲,如果从js取路径,只需要将该路径替换到文中的filePaths 下
  • Android 保存图片到SQLite

    千次阅读 2012-02-29 15:27:31
    一般只保存图片路径,没有直接把图片保存...比如说你把image.jpg放在sdcard的images目录下,那你就在数据库存/sdcard/images/image.jpg ( 我是直接存图片名字,然后调用的时候再补上图片路径!代码如下private S
  • 当然是图片存放在服务器上,数据库存路径。 原因: 如果你把图片数据保存于数据库中,那么你还会把原始的图片删掉吗?如果不删掉,那不就重复保存了吗? 另外,操作系统中,单个文件的大小是有限制的。由于图片相对...
  • 向数据库存储读取图片方法总结

    千次阅读 2013-05-10 12:12:00
    1.首先创建一个数据表SaveImageTest ImageID:uniqueidentifier 主键 ImageType:varchar(32) 图片类型 ...ImageName:varchar(128) 图片名称 ...ImageContent:image 图片内容 ...2.向数据库存
  • 首先缓存分好几种,可存短暂性存内存,也可放到磁盘,我这里就是利用Sqlite数据库存到SD卡中的。 那么,来缕缕思路,什么情况下需要缓存数据,当你打开app时没网一个大白板。哇好糟心,这个时候缓存数据就比较重要...
  • 将系统中的字体保存为图片,为orc提供训练数据 一、字体库存路径 win10系统字库文件所在的目录为c:\Windows\Fonts\ 二、字体库提取保存代码 代码中选择的字体库是Microsoft YaHei的,字库保存的代码如下 #...
  • 提高图片存取效率

    2009-02-24 00:12:11
    图片直接放在数据库中好(二进制),还是在数据库存路径,文件系统存对应图片好? 3.还有这种网站一般那些东西要进行缓存?类似SNS网站 谢谢大家! <strong>问题补充</strong><br/>...
  • 最近在小程序中做到了头像上传这个功能,本来是挺简单的一个功能,但是这次是让我直接将图片上传到云储存,把返回的路径直接传给后台数据库存起来 emm这就很蛋疼了,一直都是处于你给我接口,我照着要求填数据就行...
  • 我的图片是存放在Tomcat\webapps一个目录下,前台jsp查询到数据库存图片的URL路径, jsp问题代码如下: ${itemsList }" var="item"> ;">()"value="${item.id}" /> ;">${item.imageUrl } ;...
  • 兼容新旧数据)' COLLATE 'utf8_general_ci', <code>parent_sku</code> VARCHAR(100) NULL DEFAULT '' COMMENT '商品sku' COLLATE 'utf8_general_ci', <code>purchase_...
  • Uploadtest3.zip

    2019-07-17 15:20:54
    图片是存到tomcat服务器下,数据库存的是一个路径,显示的时候也是取出这个路径将其遍历显示出来的

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

数据库存图片路径