我正在使用只上传一个图片或视频文件的项目。 http://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/已在此处下载。我修改了MainActivity
File f = new File(Environment
.getExternalStorageDirectory(),
Config.IMAGE_DIRECTORY_NAME);
File[] file = f.listFiles();
String s= null;
arrayFiles = new ArrayList<String>();
if (file.length == 0)
{
Toast.makeText(getApplicationContext(), "No Files Found", Toast.LENGTH_LONG).show();
finish();
}
else {
for (int i=0; i<file.length; i++)
{
arrayFiles.add(file[i].getName());
s=arrayFiles.get(i);
Toast.makeText(getApplicationContext(),s , Toast.LENGTH_SHORT).show();
}
Intent i= new Intent(MainActivity.this, UploadActivity.class);
i.putStringArrayListExtra("files", arrayFiles);
startActivity(i);
这让我获得了所有文件的完整路径。在uploadActvity
中 for (int j = 0; j < files.size(); j++) {
//filePath=Environment.getExternalStorageDirectory()+"/"+Config.IMAGE_DIRECTORY_NAME+"/"+files.get(j);
filePath=files.get(j);
Toast.makeText(getApplicationContext(), filePath, Toast.LENGTH_SHORT).show();
new UploadFileToServer().execute();
filePath="";
}
我正在使用此代码上传所有文件,方法是将arrayList从intent中逐个复制到filePath。但我得到EISDIR java io文件未找到异常,尽管吐司显示从主要活动发送的正确路径。请帮忙
答案 0 :(得分:0)
添加UploadFileToServer
的构造函数的文件路径,如UploadFileToServer(filePath)
UploadFileToServer将你的工作移动到后台线程当这个线程启动你的filePath时将是空的或其他一些文件路径。因此,使用AsyncTask绑定文件路径。
答案 1 :(得分:0)
错误在于filePath被清空的地方。由于异步任务在后台运行,因此将filePath等同为null会导致找不到文件异常。在新的UploadFileToServer()。execute()之后必须提供某种延迟。 让文件上传完成,然后加载下一个文件。作品!!!!!