Android java.io.FileNotFoundException映像打开失败:从内部存储中删除
你好,我在安卓工作。我想将多个捕获的图像保存在一个文件夹中(在设备的内部存储器中以编程方式创建),并从该文件夹中读取该文件,然后以多部分形式发送到服务器。我使用下面的代码将图像附加到多部分Android java.io.FileNotFoundException映像打开失败:从内部存储中删除,java,android,image,file,multipart,Java,Android,Image,File,Multipart,你好,我在安卓工作。我想将多个捕获的图像保存在一个文件夹中(在设备的内部存储器中以编程方式创建),并从该文件夹中读取该文件,然后以多部分形式发送到服务器。我使用下面的代码将图像附加到多部分 for(int i=0;i<Captured_imagePath.size();i++) { try { final File file2 = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFol
for(int i=0;i<Captured_imagePath.size();i++) {
try {
final File file2 = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFolder/" + Captured_imagePath.get(i));
final FileBody fileBody = new FileBody(file2);
entityBuilder.addPart(file2.getName(), fileBody);
entityBuilder.setBoundary(boundary);
} catch (Exception e) {
Log.i(TAG, "Except:: " + e.toString());
}
}
我在清单中添加了权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
我完整的multpart上传方法是
public String uploadMultipart(String url,String json ,ArrayList<String> imagePath,ArrayList<String> Captured_imagePath) {
String result="";
File file=null;
String boundary = "-------------" + System.currentTimeMillis();
try
{
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addTextBody("json", json);
entityBuilder.setBoundary(boundary);
if(imagePath.size()!=0)
{
file = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFolder/" + imagePath.get(0));
entityBuilder.addBinaryBody(file.getName(), file, ContentType.create("image/jpeg"), imagePath.get(0));
entityBuilder.setBoundary(boundary);
}
if(Captured_imagePath.size()!=0)
{
for(int i=0;i<Captured_imagePath.size();i++)
{
try {
final File file2 = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFolder/" + Captured_imagePath.get(i));
final FileBody fileBody = new FileBody(file2);
entityBuilder.addPart(file2.getName(), fileBody);
entityBuilder.setBoundary(boundary);
}catch (Exception e)
{
Log.i(TAG, "Except:: " + e.toString());
}
}
}
HttpEntity entity = entityBuilder.build();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
entity.writeTo(bytes);
String content = bytes.toString();
// Log.i(TAG,"sending data"+content);
// writeToFile("shanu",content);
post.setEntity(entity);
HttpResponse response = client.execute(post);
HttpEntity httpEntity = response.getEntity();
result = EntityUtils.toString(httpEntity);
Log.i(TAG2, result);
}
catch(Exception e)
{
e.printStackTrace();
}
return result.toString();
公共字符串上传多部分(字符串url、字符串json、ArrayList imagePath、ArrayList捕获的\u imagePath){
字符串结果=”;
File=null;
字符串边界=“--------------”+System.currentTimeMillis();
尝试
{
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(url);
MultipartEntityBuilder entityBuilder=MultipartEntityBuilder.create();
entityBuilder.setMode(与HttpMultipartMode.BROWSER_兼容);
addTextBody(“json”,json);
entityBuilder.setBoundary(边界);
如果(imagePath.size()!=0)
{
file=新文件(android.os.Environment.getExternalStorageDirectory()+“/MyFolder/”+imagePath.get(0));
entityBuilder.addBinaryBody(file.getName(),file,ContentType.create(“image/jpeg”),imagePath.get(0));
entityBuilder.setBoundary(边界);
}
如果(捕获的图像路径.size()!=0)
{
对于(inti=0;i,路径中有额外的空白
试试这个
file = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFolder/" + imagePath.get(0).toString().trim());
您的路径中有额外的空白
试试这个
file = new File(android.os.Environment.getExternalStorageDirectory() + "/MyFolder/" + imagePath.get(0).toString().trim());
你是如何循环加载多个图像的?需要代码来验证MyFolder/
i.e/storage/sdcard0/MyFolder/20160123_121858.jpg之后似乎有一个空格。这就是问题的根源。@Harry:这里捕获的图像路径是图像名称的数组列表,循环到数组列表大小,并将每个项目附加到entityBuilder in在循环中。这是一个错误的方法吗?你能发布整个代码吗?如果网络连接在循环中完成,并且如果你没有提供一个等待机制来完成一次图像上传,然后继续下一次可能会出现错误…@Harry:请检查我的新编辑秀你是否在循环加载多个图像?需要验证代码吗Y在MyFolder/
即/storage/sdcard0/MyFolder/20160123_121858.jpg之后似乎有一个空格。这就是问题的原因。@Harry:这里捕获的\u imagePath是图像名称的数组列表,循环到数组列表大小,并将每个项目附加到循环中的entityBuilder。这是错误的方法吗?你能发布整个代码吗?如果k连接是在一个循环中完成的,如果您没有提供一个等待机制来完成一次图像上传并继续下一次可能会出现错误…@Harry:请检查我的新编辑