2017-01-10 6 views
0

Я хочу использовать приложение Загрузить только .jpg, а не другие файлы с различными extensions.Take Only ".jpg" (Android)

Не могли бы вы рассказать мне, что я должен добавить в свой код?

Это мой код:

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

Пожалуйста, сделайте некоторое исследование перед публикацией вопроса. Этот дубликат был найден в 10 секунд, и это должно ответить на вашу проблему. – AxelH

+0

Благодарим вас за ответы. –

ответ

1

Ну, как у вас есть имя файла, вы можете проверить, если он заканчивается на .jpg (или .jpeg!):

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

Это работа! Спасибо Gudin :) –

1

Здесь:

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

Вы уже есть имя файла «под рукой»; но вместо написания простой проверки, например, if (fileName.endsWith(".jpeg")), вы просто загружаете все файлы!

Конечно, вещи нуждаются в некоторой доработке. Если вы точно знаете, что все файлы заканчиваются на .jpeg, тогда это работает, но, возможно, JPG, JPG и т. Д. Тоже будут работать.

И если вы хотите действительно «полное» решение, вам нужно будет проверить тип файла MIME каждого файла.

+0

Спасибо за ваш ответ GhostCat –

+0

Добро пожаловать: Но только для записи: ответ, который вы приняли, является ** чрезмерно ** сложным. Нет смысла в сплите имени файла; вы можете просто пойти и проверить окончание этой строки! И btw: вы, вероятно, хотите поставить эту целую проверку в свой ** собственный метод **, например 'boolean isJpeg (String filneName)', поскольку это облегчит вам изменение точного вида проверки, которую вы делаете. – GhostCat