невозможно записать данные образа Base64 на FTP-сервер - PullRequest
0 голосов
/ 22 октября 2018

Я столкнулся с проблемой записи данных Base64image на FTP.Когда я пишу это на локальном диске, фотография появляется четко.Но, когда я пишу это на FTP-сервере, это выглядит как испорченные изображения.когда я записываю его на локальный диск, оно показывается так: введите описание изображения здесь Я прикрепил картинку на FTP. введите описание изображения здесь

Вот мой код.

  private static String testFilesDir = "C:\\Storage";
public String getIncidentPhotoByID(int incident_id, int photoId) {
    String base64Image = null;
    WebSSLClient client = new WebSSLClient();

    Response response =client.createRequest(PropertiesUtil.getOracleCloudRestUrL() + "/mobile/platform/storage/collections/incident_photos_collection/objects/incident_462_03").get();

    String jsonResponse = response.readEntity(String.class);

            base64Image = jsonResponse;
                FTPClient ftp = new FTPClient();  
                FileInputStream fis = null;
                String filename = "incident_462_03";

                String[] strings = base64Image.split(",");
                String extension;
                   switch (strings[0]) {//check image's extension
                       case "data:image/jpeg;base64":
                           extension = "jpeg";
                           break;
                       case "data:image/png;base64":
                           extension = "png";
                           break;
                       default://should write cases for more images types
                           extension = "jpg";
                           break;
                   }
                //convert base64 string to binary data

                   byte[] data1 = Base64.decodeBase64(strings[1]);
                 /*
                   String path = testFilesDir+"/"+filename+"."+ extension;
                   File file = new File(path);
                   try (OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file))) {
                       outputStream.write(data1);
                   } catch (IOException e) {
                       e.printStackTrace();
                   } */

                   try  {  

                       ftp.connect("link.myjpl.com");
                       ftp.login("user", "password");
                       String path = "Images/test/"+filename+"."+ extension;
                       OutputStream out1 = ftp.storeFileStream(path);
                       out1.write(data1);
                       ftp.logout();

                   } catch (IOException e) {
                       e.printStackTrace();
                   } 

    return base64Image;
}

}

1 Ответ

0 голосов
/ 26 октября 2018

Попробуйте установить для fileType значение FTP.BINARY_FILE_TYPE.Также в соответствии с javadocs, чтобы завершить передачу файла, вы должны позвонить completePendingCommand и проверить его возвращаемое значение, чтобы проверить успешность.

См. https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html#storeFileStream(java.lang.String)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...