2015-07-21 4 views
0

Я подключаюсь к IP Cam через python и запускаю этот скрипт в сервлете Java. Затем я загружаю каждое изображение в Java и преобразовываю его в массив байтов с кодировкой base64. Наконец, я прошу эти данные через AJAX через объект JSON. Я не получаю никаких ошибок, но изображения тоже не отображаются.Почему мои изображения не загружаются из моего сервлета Java?

JavaScript:

$().ready(callToServer); 
     function callToServer(){ 
      $.ajax({ 
       type:"GET", 
       url:"DroneServlet.do", 
       async:true, 
       data: null, 
       dataType:"json", 
       success: drawImage,//function to do is success 
       error: badRequest//function to do is error 
      }); 
      setTimeout(callToServer,5000); 
     } 
     function toArray(str){ 
      var i; 
      var bytes=[]; 
      for(i=0;i<str.length;i++) 
      { 
       bytes.push(str.charAt(i)); 
      } 
      return bytes; 
     } 
     function badRequest(){ 
      console.log("failed"); 
     } 
     function drawImage(json) 
     { 
      var img = json.imgData[0].imageToDisplay; 
      var biStr=toArray(img); 
      var data = biStr.join(''); 
      //var base64 = window.btoa(data); 
      document.getElementById("dynamic").src = "data:image/jpeg;base64," + data; 
     } 

Java фрагмент кода:

byte[] imgData = PythonRunner.grabPhotoBytes();//loads single image and convert to byte[] 
    JSONObject jsonResponse = new JSONObject(); 
    JSONArray jsonArray = new JSONArray(); 
    JSONObject img = new JSONObject(); 
    String encodedImg = Base64.encodeBase64String(imgData); 
    img.put("imageToDisplay", encodedImg); 
    jsonArray.add(img); 
    jsonResponse.put("imgData", jsonArray); 
    out.println(jsonResponse.toJSONString() ); // send the WeatherData collection in JSON format 

ответ

0

Отправка изображения, как Base64 бы худшее, что здесь, вы просто получить изображение и сохранить его на сервере локальной системы с помощью ImageIO класса, и конечно, как имя (возможно, случайное).

Во-первых у вас есть сохраненные данные, следующие, по системе
/root/image_folks/trejon_house7222015-0342.jpeg сервера, где имя будет случайным или что-нибудь.

Тогда ответьте имя изображения на json-ответ клиенту как простую строку, и клиент попросит /get-image cgi/servlet, чтобы получить изображение (например, /get-image?id=trejon_house7222015-0342).

теперь имеет простой сервлет, который загружает локальный файл сервера и отвечает на него клиентом, но не забудьте указать тип MIME

Смежные вопросы