1. 程式人生 > >瀏覽器無法載入本地檔案,在後臺讀取位元組流後返回給前端顯示

瀏覽器無法載入本地檔案,在後臺讀取位元組流後返回給前端顯示

由於安全性考慮,許多瀏覽器不允許訪問本地檔案。

用谷歌瀏覽器開啟html時,img的src賦值如F:/XXX/XXX/**.jpg,console顯示no allowed to load local resourses

1. 將src改為file:///F:/XXX形式,依然無法載入圖片

2. 試過下載LocalLinks外掛,無效

3. 加--allowed-access-file-from-files命令失敗

4. 在後臺讀取圖片的位元組流,再轉成JSON形式字串,返回給前端顯示

    一開始使用FileInputStream,將位元組流讀入byte陣列

FileInputStream in=new FIleInputStream(imageurl);

byte[ ]data=new byte[in.avaliable]; //這一句可得到正確檔案大小的byte陣列

        in.read(data);     //除錯發現,data陣列每次的值都不一樣,大小與正確檔案大小不符,原因未知

        in.close();

   後使用IOUtils.toByteArray方法,可正常執行,後臺程式碼如下

public String showPicture(String imageurl,HttpServletResponse response){
FileInputStream in;
try{ 
File file=new File(imageurl);
in=new FileInputStream(file);
int i=(int) file.length();//得到檔案大小
StringBuilder sb=new StringBuilder();
sb.append("data:image/jpg;base64,");  //前端可以判斷是圖片資料
String b= new String(Base64.encodeBase64(IOUtils.toByteArray(in)));
sb.append(b);
System.out.println(b.length());
return sb.toString();
}catch (IOException e) {  
               e.printStackTrace();  
           }  
return null;
}

 前端程式碼: 令img標籤的src屬性=上述程式碼返回的string

相關推薦

no