Code Bye

Spring mvc图像上传问题

图像已经上传到本次磁盘d盘。不想让图片存在服务器,好像可以配置一个虚拟磁盘直接读取本地文件。求大大教怎么配置啊。还有jsp页面src怎么判断是否上传图片,没有就直接给他一个默认的值。

下面是代码: @RequestMapping(value=”/upload”)//配置控制器名称及其他信息
    public void handleUplod(@RequestParam(“name”) String name,HttpSession session,
@RequestParam(“file”) MultipartFile file,Map<String,Object> model,HttpServletRequest req){
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
//本地d盘
//FileCopyUtils.copy(bytes, new File(“d:\” + file.getOriginalFilename()));
FileCopyUtils.copy(bytes, new File(“d:\” + file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
model.put(“path”, “img/” + file.getOriginalFilename());

}

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块里处理,配置一个默认图片地址返回就行(如果没有静态图片服务器,就得用第二种、第三种方法处理默认图片)

引用 1 楼 zhangjihao 的回复:

没有上传成功的话在cache块里处理,配置一个默认图片地址返回就行(如果没有静态图片服务器,就得用第二种、第三种方法处理默认图片)

我很奇怪的是他src里面怎么去获取

引用 1 楼 zhangjihao 的回复:

有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怎么拿后台传的值,并且没有赋值一个默认地址

引用 1 楼 zhangjihao 的回复:

有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块里处理,配置一个默认图片地址返回就行(如果没有静态图片服务器,就得用第二种、第三种方法处理默认图片)

刚把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()
引用 5 楼 zhangjihao 的回复:

我用的是:
org.apache.commons.codec.binary.Base64
commons-codec-1.7.jar
方法是:
Base64.encodeBase64String()

难怪呢,我用的是commons-codec-1.4.jar  那么前端处理你知道吗,谢谢哈

引用 6 楼 zhuawa_zzl 的回复:
Quote: 引用 5 楼 zhangjihao 的回复:

我用的是:
org.apache.commons.codec.binary.Base64
commons-codec-1.7.jar
方法是:
Base64.encodeBase64String()

难怪呢,我用的是commons-codec-1.4.jar  那么前端处理你知道吗,谢谢哈

前端不需要处理,如果base压缩正确,浏览器就能显示。

  
去下了1.7的jar这还是报错啊大哥
引用 8 楼 zhuawa_zzl 的回复:

  
去下了1.7的jar这还是报错啊大哥

Base64.encodeBase64String()


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring mvc图像上传问题