簡體   English   中英

無法在FTP服務器上寫入Base64圖像數據

[英]unable to write Base64 image data on FTP server

我在FTP上寫入Base64image數據時遇到問題。 當我將其寫在本地驅動器上時,照片清晰可見。 但是,當我在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;
}

}

嘗試將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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM