我想将图片上传到服务器。这是我的代码:
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 :(得分:0)
作为文档openFileInput()
打开与此Context的应用程序包关联的私有文件 阅读。
参数
名称要打开的文件的名称;不能包含路径 分隔符。
即。 openFileInput()
不接受路径,只有文件名才能访问路径,使用新文件(路径)从路径获取文件名,然后将其传递给{ {1}}。
代码更改
openFileInput()
到
FileInputStream srcFileStream = context.openFileInput(srcFilePath);
修改强>
您在SD卡中的文件,并且您正在使用打开内部文件的 FileInputStream srcFileStream = context.openFileInput("20141014_055246.jpg");
。所以要从SD卡获取文件,请使用
openFileInput()
并使用File mFile = new File(srcFilePath);
作为
srcFileStream
而不是
FileInputStream srcFileStream = new FileInputStream(mFile);