2014-10-14 4 views
0

Я хочу загрузить изображение на сервер. Вот мой код:Ошибка ftpUpload: java.lang.IllegalArgumentException:

MainAcitvity.java:

String filePath = Environment.getExternalStorageDirectory()+ 
            "/cloze_screenshots/20141014_055246.jpg";  
boolean ftpclient.ftpUpload(filePath,"20141014_055246.jpg","./bigmimi/public_html/testing/"+"947917688555565/",cntx); 

ftpclient.java:

public boolean ftpUpload(String srcFilePath, String desFileName, 
         String desDirectory, Context context) 
{ 
    boolean status = false; 
    try { 
     // FileInputStream srcFileStream = new FileInputStream(srcFilePath); 

     FileInputStream srcFileStream = context.openFileInput(srcFilePath); 

     // change working directory to the destination directory 
     //if (ftpChangeDirectory(desDirectory)) { 
      status = mFTPClient.storeFile(desFileName, srcFileStream); 
     //} 

     srcFileStream.close(); 
     return status; 
    } 
    catch (Exception e) { 
     //Log.d(TAG, "upload failed: " + e); 
     Log.e("go","error: "+ e); 
    } 

    return status; 
}    

Я получаю сообщение об ошибке:

error: java.lang.IllegalArgumentException: File /storage/emulated/0/cloze_screenshots/20141014_055246.jpg contains a path separator 

Любое предложение будет оценено.

ответ

0

В статистике в Документах openFileInput()

Open a private file associated with this Context's application package for reading.

Parameters

name The name of the file to open; can not contain path separators.

т.е. openFileInput() не принимает пути, только имя файла, если вы хотите получить доступ к пути, использовать новый файл (путь), чтобы получить имя файла из пути а затем передать его в openFileInput().

в вашем изменении кода

FileInputStream srcFileStream = context.openFileInput(srcFilePath); 

в

FileInputStream srcFileStream = context.openFileInput("20141014_055246.jpg"); 

Edit

файлы в SD-карте, и вы используете openFileInput(), которые открывают внутренний файл. поэтому, чтобы получить файлы из SDCard, используйте

File mFile = new File(srcFilePath); 

и использовать srcFileStream в

FileInputStream srcFileStream = new FileInputStream(mFile); 

вместо

FileInputStream srcFileStream = context.openFileInput(srcFilePath); 
+0

я получаю новую ошибку: ошибка: java.io.FileNotFoundException:/данные/data/com.example.friendpicker/files/20141014_072939.jpg: open failed: ENOENT (Нет такого файла или каталога) – hiein2003

+0

@ hiein2003 Вы поменяли, как было предложено. Пожалуйста, напишите свой код, который вы обновляете –

+0

@ hiein2003 кажется, что ваши файлы изображений в sdcard и вы пытаетесь получить их из внутренней памяти. –

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