关于Java读取本地文件夹内的照片的博客很多,我当时写的时候也是参考了很多的博客。但是我还是把我这个发出来。因为很多的博客都是用的outputstream来写的,我是用的fileinputstream读取的照片,读取成二进制文件,然后进行base64编码,然后是转化成json格式的文件输出的。其实outputstream也能输出照片文件,但是因为需要将文件名附加上,所以采用了json格式的传输方式。
本博客涉及的知识点有:
1,读取本地文件夹照片,并转化成json格式文件输出
代码如下:
package imageDefectMake;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@WebServlet("/readImage")
public class readImage extends HttpServlet {
private static final long serialVersionUID = -1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//读取本地图片输入流
String path="your_path";
File file =new File(path);
File[] list=file.listFiles();
int fileNumber=list.length;//照片数量
JSONArray jsonarray = new JSONArray();
JSONObject jsonobj0 = new JSONObject();
response.setContentType("image/jpeg");
PrintWriter printWriter=response.getWriter();
for (int i = 0; i <10 ; i++) {
FileInputStream filein=new FileInputStream(list[i]);
JSONObject jsonObject=new JSONObject();
int filesize=filein.available();
byte[] fileByte=new byte[filesize];
filein.read(fileByte);
// 下面的代码是为了将二进制文件进行base64编码的转化
String base64encoder=Base64.getEncoder().encodeToString(fileByte);
String fileName=list[i].getName();
fileName=fileName.split("\\.")[0];//由于.是一个特殊字符,因此想要分割字符串就需要用到转义字符\\
jsonObject.put("base64Image",base64encoder);
jsonObject.put("fileName",fileName);
jsonarray.add(jsonObject);
}
jsonobj0.put("Image",jsonarray);
printWriter.println(jsonobj0);
}
}
2,前台发出ajax请求,并在解析成功之后解析json数据
代码如下:
function requestImage(){
$.ajax({
url:"readImage",
type:"get",
success:function (result){
//解析数据
data=JSON.parse(result);
dataset=data.Image;
for (var i = 0; i <dataset.length ; i++) {
dataset[i].base64Image="data:image/jpeg;base64,"+dataset[i].base64Image;
imageList.push(dataset[i]);
}
showTable();
}
})
}