-
[深圳|结业弟子]JAVA-苏晔0
java springMVC接收图片一般用下面的类型来接收。
CommonsMultipartFile
首先,CommonsMultipartFile需要在前端用表单提交,表单需要设置下面的属性:
enctype="multipart/form-data"
而且,CommonsMultipartFile参数需要使用下面的属性来接收
@RequestParam
示例如下:
<form action="/login" enctype="multipart/form-data" method="post">
<table>
<tr>
<td>请选择头像:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="上传"></td>
</tr>
</table></form>
然后在后端使用CommonsMultipartFile自带的方法将其转化为流。
编辑于2018-03-25 -
[北京|结业弟子]JAVA-铁木儿0
楼上是一种方法
我给你提供另外一种思路,讲base64的数据流作为传输对象
工具类
public class Image {
/**
* 将文件转换为Base64格式
* @param [path]
* @return java.lang.String
*/
public String imageToBase64(String path) {
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
byte[] data = null;
// 读取图片字节数组
try {
InputStream inputStream = new FileInputStream(path);
data = new byte[inputStream.available()];
inputStream.read(data);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(data);
}
/**
* base64字符串转化成图片并保存到本地
* @param [imgStr]
* @return java.lang.String
*/
public String generateImage(String imgStr) {
Integer name = imgStr.hashCode();
//定义文件保存的本地路径
String filePath = "./images/";
//定义 文件名
String filename = name.toString()+".jpg";
String file = filePath+filename;
if (imgStr == null) {
// 图像数据为空
return null;
} else {
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
// 调整异常数据
b[i] += 256;
}
}
OutputStream out = new FileOutputStream(file);
out.write(b);
out.flush();
out.close();
return filename;
} catch (Exception e) {
e.printStackTrace();
}
}
return filename;
}两个方法,一个接收文件地址(也就是文件本身),另一个将文件转换为base64格式的数据流进行传输,服务器接收到数据流后,还原成文件,重命名,保存。这个工具类既可以接收文件形式,也可以直接加base64格式的图片上传(编辑器环境)。
编辑于2018-09-21
- 去第 页