图像已经上传到本次磁盘d盘。不想让图片存在服务器,好像可以配置一个虚拟磁盘直接读取本地文件。求大大教怎么配置啊。还有jsp页面src怎么判断是否上传图片,没有就直接给他一个默认的值。 下面是代码: @RequestMapping(value=”/upload”)//配置控制器名称及其他信息 } jsp: <img id=path src=”${path}” class=”img-circle”style=”margin-left:30px;margin-top:30px;margin-bottom: 0px;”onclick=”upload();”> src怎么拿后台传的值,并且没有赋值一个默认地址 |
|
100分 |
有3种方法:
第一种、配置一个Apache或Nginx服务器: <!--Apache--> <VirtualHost pic.example.com> ServerName pic.example.com DocumentRoot "D:/" </VirtualHost> <!--注意同时要配置权限--> <!--Nginx--> server { listen 80; server_name pic.example.com; location / { root d:/; } } 第二种:写一个方法处理图片请求: @RequestMapping("/images") public void images(@RequestParam String file, HttpServletResponse response){ File f = new File("d:/", file); //response.getOutputStream().write...... } 第三种:在上传的方法中同步返回 model.put("path", "img/" + file.getOriginalFilename()); //这需要注意的是不能返回地址,只能返回Base64压缩的图片文件流,具体做法是: model.put("path", "data:image/jpeg;base64," + Base64.getEncoder().encode(bytes)); //Base64压缩算法特别重要,否则浏览器不能解析。 没有上传成功的话在cache块里处理,配置一个默认图片地址返回就行(如果没有静态图片服务器,就得用第二种、第三种方法处理默认图片) |
我很奇怪的是他src里面怎么去获取 |
|
那么src怎么拿后台传的值,并且没有赋值一个默认地址 |
|
刚把model.put(“path”, “data:image/jpeg;base64,” + Base64.getEncoder().encode(bytes));加上 可是报错。导入jar包都显示没有getEncoder这个方法,应该用哪个jar包啊。不好意思啊,原来都没有接触过Base64 |
|
我用的是:
org.apache.commons.codec.binary.Base64 commons-codec-1.7.jar 方法是: Base64.encodeBase64String() |
|
难怪呢,我用的是commons-codec-1.4.jar 那么前端处理你知道吗,谢谢哈 |
|
前端不需要处理,如果base压缩正确,浏览器就能显示。 |
|
去下了1.7的jar这还是报错啊大哥 |
|
Base64.encodeBase64String() |