首先你这个思路就错误了,任何企业开发都不会把图片的二进制保存到数据库,图片太大,数据库会很快就满了,都是把图片保存到服务器的一个路径下,
例如tomcat的一个路径下面,然后把路径保存到数据库,这样去页面的时候就通过路径访问tomcat下面的图片就可以了。
15条回答
-
采纳
点赞 7 评论 复制链接分享
-
采纳
将图片的路径保存在数据库的表中,然后用的时候取出来,全部取出来,然后循环便利
点赞 评论 复制链接分享 -
采纳
正常来说,企业网页处理文件上传问题的思路是通过解析文件然后先将文件复制到服务器端,然后将上传的文件的路径和文件名放在一个表中,然后在需要的时候后台获取文件名及文件路径,然后通过el表达式前台写到想要放置的标签下的路径属性里就好了
点赞 评论 复制链接分享 -
采纳
你数据库的图片有个id,然后你后台提供一个方法(url),参数就是图片的Id,通过这个方法返回图片数据到前台就可以了。
点赞 评论 复制链接分享 -
采纳
给你给我的demo吧,我使用的bootstrap-fileinput,前台效果如图
<div class="htmleaf-container" style="width:60%;display: none;"> <div class="container kv-main"> <form enctype="multipart/form-data" style="width:60%;background:#ccff99;position:absolute;top: 1%;left: 20%;z-index:1000;"> <div class="form-group"> <input id="file-4" type="file" name="file" class="file" multiple class="file-loading"> </div> <hr> <!-- <div class="form-group"> <button class="btn btn-warning" type="button">Disable Test</button> <button class="btn btn-info" type="reset">Refresh Test</button> <button class="btn btn-primary">Submit</button> <button class="btn btn-default" type="reset">Reset</button> </div>--> </form> </div> </div> $("#file-4").fileinput({ uploadUrl: 'uploadBackgroundImage.htm?employeeCode=$currentUserTool.getCurrentUserName()', // you must set a valid URL here else you will get an error allowedFileExtensions : ['jpg', 'png','gif'], overwriteInitial: false, showCaption:false, showUpload: false, // hide upload button showRemove: false, // hide remove button maxFileSize: 900, maxFilesNum: 1, }).on("filebatchselected", function(event, files) { $("#file-4").fileinput("upload"); }).on('filebatchuploadcomplete', function() { refresh(); }); function refresh(){ window.location.reload(); } @RequestMapping("uploadBackgroundImage") @ResponseBody public String uploadBackgroundImage(ModelMap model, @RequestParam("file") MultipartFile file, EmployeePhotoModel query) throws IOException { List<EmployeePhotoModel> list = null; try { list = employeePhoto.queryEmployeePhoto(query); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (list.size() <= 0) { query.setEmployeeCode(CurrentUserUtil.getCurrentUserName()); employeePhoto.insert(query); } byte[] bytes = file.getBytes(); query.setBackGroundImage(bytes); try { long r = employeePhoto.updateBackGroundImage(query); } catch (Exception e) { e.printStackTrace(); } return "true"; } /** * 读取上传的图片 * * @param employeeCode * @param response * @param request * @param model * @throws ServletException * @throws IOException * @throws SQLException */ @RequestMapping(value = "showUploadImage") public void showUploadImage(@RequestParam("employeeCode") String employeeCode, HttpServletResponse response, HttpServletRequest request, ModelMap model) throws ServletException, IOException, SQLException { if (!StringUtil.isEmpty(employeeCode)) { Map map = employeePhoto.getBackgroundId(employeeCode); // 获取背景图片 if (map != null && map.size() > 0) { BLOB blob = (BLOB) map.get("BACKGROUNDIMAGE"); byte[] bytes = blob.getBytes(1L, (int) blob.length()); response.setContentType("image/jpeg, image/jpg, image/png, image/gif"); InputStream in1 = new ByteArrayInputStream(bytes); IOUtils.copy(in1, response.getOutputStream()); } } String logoRealPathDir = request.getSession().getServletContext().getRealPath("/img/background.jpg"); InputStream is = new FileInputStream(logoRealPathDir); IOUtils.copy(is, response.getOutputStream()); } .contain{border:1px solid white;border-radius: 8px;background:url(showUploadImage.htm?employeeCode=$currentUserTool.getCurrentUserName());background-size: cover; } //前台展示的时候直接把背景的url替换成后台的方法就行
核心代码已给出,供参考
点赞 评论 复制链接分享 -
采纳
这样太麻烦,而且效率不好。不如把图片当做普通的文件,把路径存在数据库中,查数据库查出路径,在jsp就可以显示啊。更换背景图片,其实就是更换路径。
点赞 评论 复制链接分享 -
采纳
给你范例;
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/zPvcnAAAAAElFTkSuQmCC" />
点赞 评论 复制链接分享 - 采纳
-
采纳
把图片存放在数据库,
你们脑洞是得多大才能想到用这个方式,
先不说数据你要放在jsp页面上需要的是图片文件的物理路径,
不说数据库存储量是否足够你如此挥霍,
单是你每次都要把图片先读取出来先要处理才能使用想想就麻烦。
你何不数据库里存放图片路径,直接取路径然后传到页面上呢。点赞 评论 复制链接分享 -
采纳
支持 rabbit 的说法,图片名称路径固定就好了,上传图片直接把原来的覆盖就OK了;
保险一点就先备份原来的,再覆盖。点赞 评论 复制链接分享 -
采纳
确实不能这样做,做动态刷新,就是一个js的事,动态发送获取图片的请求,而登陆界面用的图片数量有限,应保存在项目路径下,如果图片很多则建立图片管理服务器,其存取图片的方式也不是把图片流存入数据库的。
点赞 评论 复制链接分享 -
采纳
不知道你解决了没有
前台代码:src中存放?前面放Servlet请求或者Action请求 ?后面放查询图片的参数(例如aaa=123,多个参数用& 连接例如src="testServlet?a=132&b=456")<img src="testServlet?[XXXXX=?]" alt="">
//resp 是HttpServletResponse对象 blob(java.sql.Blob;)是从数据库中存放的blob数据查询出来的结果
//下面是主要的代码,不知道你在数据库中存储的是什么格式的数据
OutputStream os = resp.getOutputStream();
InputStream is = blob.getBinaryStream();
byte[] image == new byte[is.available()];
is.read(image);
os.write(image);
os.flush();点赞 评论 复制链接分享 -
采纳
/*
- @(#) FileloadController.java 2016年12月22日 *
- Copyright (c) 2015, XiaHeng NetWork. All Rights Reserved.
- XiaHeng NetWork. CONFIDENTIAL */ package controller.admin;
import java.util.ArrayList;
import java.util.List;import utils.interceptor.LoginAdminInterceptor;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Before;
import com.jfinal.upload.UploadFile;
import com.xiaheng.annotation.RouteViewPath;
import com.xiaheng.core.jfinal.CRUD;
import com.xiaheng.utils.CodeBean;
import com.xiaheng.utils.ProjectUtil;
import com.xiaheng.utils.UploadUtils;/**
- 附件上传
- @Description
- @author Chuck Don
- @version 1.0
-
@since 2016年12月22日
*/
@Before(LoginAdminInterceptor.class)
@RouteViewPath("admin/")
public class FileloadController extends CRUD {@Override
public String route() {
// TODO Auto-generated method stub
return "/admin/file";
}/**
- @方法名:上传图片
- @参数:
- @输出:
- @备注:
- @作者: 徐磊
- @时间: 2017年6月20 10:51:31
- @修改: */ public void uploadImg() { List files = getFiles(); renderJSON(UploadUtils.uploadFile(files, ".jpg|.png|.jpeg", 1024 * 10)); }
/**
- @方法名:上传视频
- @参数:
- @输出:
- @备注:
- @作者: 徐磊
- @时间: 2017年6月20 10:51:39
- @修改: */ public void uploadVideo() { List files = getFiles(); renderJSON(UploadUtils.uploadFileSe(files, ".mp4", 1024 * 30)); }
/**
- @方法名:上传视频
- @参数:
- @输出:
- @备注:
- @作者: 徐磊
- @时间: 2017年6月20 10:51:39
- @修改: */ public void uploadVersion() { List files = getFiles(); renderJSON(UploadUtils.uploadFileSe(files, ".apk|.ipa", 1024 * 30)); }
/**
- @方法名:富文本编辑器上传图片
- @参数:
- @输出:
- @备注:
- @作者: 徐磊
- @时间: 2017年6月16 4:51:07
- @修改: */ public void uploadImgByEdit() { List files = getFiles(); CodeBean<?> bean = UploadUtils .uploadFile(files, ".jpg|.png", 1024 * 10); if (bean.isSuccess()) { JSONObject json = new JSONObject(); json.put("code", 0); json.put("msg", "上传成功"); JSONObject data = new JSONObject(); @SuppressWarnings("unchecked") ArrayList path = (ArrayList) bean.getData(); data.put("src", ProjectUtil.getLoaclURL(getRequest()) + path.get(0)); json.put("data", data); renderJson(json); } } }
点赞 评论 复制链接分享 -
采纳
建议存图片路径
非要存二进制可以考虑,先在目录创建图片文件,给页面返回这个图片路径
写一个action 或servlet 调用方法查出图片数据,然后生成图片文件,返回路径
可以用aJax请求 或者 标签 标签示例
请求另一个action , 并使用返回结果
<s:action name="find_data" var="findData" namespace="/user" ignoreContextParams="true" executeResult="false" /> <body background="${findData.imageSrc}" ></body>
find_data 为一个Action 或Servlet , findData 为 这个类实例的引用 imageSrc为这个类的一个成员属性要有get set
还有种方法 你喜欢你可以去试试
图片二进制上传与显示点赞 评论 复制链接分享 -
采纳
查询数据库用
java类里面用new String(Content)
jsp页面用${Content}点赞 评论 复制链接分享
为你推荐
- shiro+cas+springboot集成做单点登录,在访问完登录页输入账户密码后,跳转失败
- java
- intellij-idea
- 3个回答
- mq,redis问题,知道的大神请指点一下,谢谢
- elasticsearch
- java
- jar
- redis
- 1个回答
- 前端vue+nuxt.js+java部署后运行一段时间后cpu撑爆了,导致其他应用挂了
- node.js
- java
- spring
- vue.js
- 8个回答
- java中,任务队列,限定长度,随时添加
- java
- 自动执行任务
- 定长的任务集合
- 任务
- 5个回答
- 前端获取不到值得问题,跟web有关,后台是Java
- 数据
- spring
- easyui框架
- 7个回答
- 求大神指点下思路,java后台实现对首页背景图片的更换
- java
- 图片
- 数据库
- 二进制
- 15个回答
- java 正则表达式,ip/子网掩码 校验,急急急
- java
- 正则表达式
- 7个回答
- java内嵌浏览器 获取cookie
- browser
- 控件
- cookie
- java
- 浏览器
- 1个回答
- 如何取到jsp页面某一行表单数据的id
- java
- 6个回答
- 请教各位大神,jsp 页面for each循环,值为空则直接显示只读?
- java
- class
- each
- 8个回答
- ssm框架中 利用HandlerInterceptor进行权限验证和登录时遇到的问题 望大神指点
- java
- ssm项目
- j2ee项目
- 3个回答
- easyui-datagrid表格设计成两行作为一组数据的内容?
- datagrid
- java
- javascript
- easyui
- 2个回答
- 日志不打印,求大神指点
- log4j
- java
- 4个回答
- 怎么用ajax下载excel文件?
- 2个回答
- Java的map集合累计存入数据
- java
- 14个回答
- 请教各位大神一个关于定时抽奖程序的设计,希望各位指点一下。
- java
- 抽奖
- 2个回答
- 用HTML5做一个带登陆的查询系统
- sql
- 数据库
- html5
- 2个回答
- 如何做一个网页的后台管理,用什么把后台管理代码和HTML5网页链接起来
- java
- javascript
- html5
- jquery
- 6个回答
- java实现excel下载(服务器端不生成文件)
- 下载
- java
- excel
- 3个回答
- 求助ajax怎么设置request.setattribute
- ajax
- java
- 5个回答