大概流程:
1.上传插件的选择:此篇博文选择的是jQuery的zyupload文件上传插件;
2.上传请求发起后,java代码的处理:你是要将上传的图片只保存在服务器还是只保存在数据库还是说两者都采取。上传到服务器很简单,保存到数据库也很简单,但是此处需要敬蚂考虑业务,图片保存在数据库时采用哪种保存方式(本博文业务来自于项目,因为图片数量巨多,故在数据库是通过稿稿茄保存图片的路径实现的,并非二进制流);
3.图片保存在数据库后,在前键察段页面的回显功能。
一般不这么存,一般是把图片存到服务器上某个文件夹,然后存路径。真的要存图片,可以凳唯把图片转换成二让派进制坦粗贺。不过,你要是这么存,就显得很蠢。
看你用的是么数据库,一般是读取后转成二进制blob格式存入数据库的BLOB类型的字段中,另一种方法是把图片转成字符串存入数据库。
如果我没记错的话 png格式的图片(要不就是gif)都不需要转回图片,直接指定到标签的src属性上就能显示。
附上图片字符串互转的java代码:
/**
* base64编码字符串转换为图片
* @param imgStr base64编码字符串
* @param path 图片路径
* @return
*/
public static boolean base64StrToImage(String imgStr, String path) {
if (imgStr == null)
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(imgStr);
// 处理数据
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
//文件夹不存在则自动创建
File tempFile = new File(path);
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(tempFile);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
/**
* 图片转base64字符串
* @param imgFile 图片路径
* @return
*/
public static String imageToBase64Str(String imgFile) {
InputStream inputStream = null;
byte[] data = null;
try {
段坦 inputStream = new FileInputStream(imgFile);
data = new byte[inputStream.available()];
inputStream.read(data);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
让燃改 }
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
public static void main(String[] args) {
String base64Str = imageToBase64Str("D:/pic/001.jpg");
System.out.println(base64Str);
坦判
boolean b = base64StrToImage(base64Str, "D:/pic/temp/002.jpg");
System.out.println(b);
}
图片上传到服务器本地,返回一个路径,然后把图片路径存到数据库