2017-01-10 24 views
0

Ich möchte zu meiner Anwendung Nur Hochladen .jpg und nicht die anderen Dateien mit anderen extensions.Take Only ".jpg" (Android)

Können Sie mir bitte sagen, was ich meinem Code hinzufügen soll?

Das ist mein Code:

public void jetzt() { 

     FTPClient ftpClient = new FTPClient(); 
     try { 
      ftpClient.connect(" FTP SERVER IP"); 

      ftpClient.setSoTimeout(10000); 
      ftpClient.enterLocalPassiveMode(); 
      if (ftpClient.login(" LOGIN ", " PASSWORD ")) { 
       ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
       ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE); 

       ftpClient.changeWorkingDirectory("/htdocs"); 

       final String serial = getManufacturerSerialNumber(); 
       ftpClient.makeDirectory(serial); 
       ftpClient.changeWorkingDirectory(serial); 


       final File folder = new File("mnt/sdcard/YmmyCandy"); 

       for (final File fileEntry : folder.listFiles()) { 
        try { 
         FileInputStream fs = new FileInputStream(fileEntry); 
         if (!fileEntry.isDirectory()) { 
          String fileName = fileEntry.getName(); 
          ftpClient.storeFile(fileName, fs); 
          fs.close(); 
          Log.i(TAG, "sent"); 
         } 

        } catch (Exception e) { 
         Log.i(TAG, "error uploading"); 
        } 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Bitte machen Sie eine Recherche, bevor Sie eine Frage stellen. Dieses Duplikat wurde in 10 Sekunden gefunden und dies sollte Ihr Problem beantworten – AxelH

+0

Vielen Dank für Ihre Antworten. –

Antwort

1

Nun, wie Sie den Namen der Datei haben, können Sie überprüfen, ob es mit .jpg endet (oder .jpeg!):

String filenameArray[] = fileEntry.getName().split("\\."); 
    String extension = filenameArray[filenameArray.length-1]; 
    if (extension.equals("jpg") || extensions.equals("jpeg")) {...} 
+0

Das ist Arbeit! Vielen Dank Gudin :) –

1

hier:

for (final File fileEntry : folder.listFiles()) { 
    ... 
    String fileName = fileEntry.getName(); 
    ftpClient.storeFile(fileName, fs); 

Sie bereits haben der Dateiname "auf der Hand"; aber anstatt einen einfachen Scheck wie if (fileName.endsWith(".jpeg")) zu schreiben, laden Sie einfach alle Dateien hoch!

Natürlich müssen die Dinge etwas verfeinert werden. Wenn Sie genau wissen, dass alle Dateien in .jpeg enden, dann funktioniert das auch, aber vielleicht funktionieren auch jpg, JPG und so weiter.

Und wenn Sie eine wirklich "vollständige" Lösung möchten, müssten Sie den Typ MIME jeder Datei überprüfen.

+0

Danke für Ihre Antwort GhostCat –

+0

Sie sind willkommen: Aber nur für das Protokoll: die Antwort, die Sie angenommen haben, ist ** übermäßig ** komplex. Es hat keinen Sinn, den Dateinamen zu trennen. Sie können einfach das Ende der einen Saite überprüfen! Und übrigens: Sie möchten wahrscheinlich diesen ganzen Check in seine ** eigene ** Methode einfügen, wie 'boolean isJpeg (String filneName)' - da dies es Ihnen leichter macht, die genaue Art der Prüfung zu ändern, die Sie gerade machen. – GhostCat