java读取本地文件夹照片

关于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();
        }
    })
}

猜你喜欢

转载自blog.csdn.net/weixin_40856057/article/details/88379739
今日推荐