Я пытаюсь прочитать файл изображения с сервера, с кодом ниже.Это продолжает входить в исключение.Я знаю, что отправляется правильное количество байтов, поскольку я их распечатываю при получении.Я отправляю файл изображения из python, например:
#open the image file and read it into an object
imgfile = open (marked_image, 'rb')
obj = imgfile.read()
#get the no of bytes in the image and convert it to a string
bytes = str(len(obj))
#send the number of bytes
self.conn.send( bytes + '\n')
if self.conn.sendall(obj) == None:
imgfile.flush()
imgfile.close()
print 'Image Sent'
else:
print 'Error'
Вот часть Android, вот где у меня проблема.Любые предложения о том, как лучше всего получить изображение и записать его в файл?
//read the number of bytes in the image
String noOfBytes = in.readLine();
Toast.makeText(this, noOfBytes, 5).show();
byte bytes [] = new byte [Integer.parseInt(noOfBytes)];
//create a file to store the retrieved image
File photo = new File(Environment.getExternalStorageDirectory(), "PostKey.jpg");
DataInputStream dis = new DataInputStream(link.getInputStream());
try{
os =new FileOutputStream(photo);
byte buf[]=new byte[1024];
int len;
while((len=dis.read(buf))>0)
os.write(buf,0,len);
Toast.makeText(this, "File recieved", 5).show();
os.close();
dis.close();
}catch(IOException e){
Toast.makeText(this, "An IO Error Occured", 5).show();
}
РЕДАКТИРОВАТЬ: Я все еще не могу заставить его работать.С тех пор я занимался этим, и результатом всех моих усилий стал либо файл не полного размера, либо приложение зависало.Я знаю, что файл не поврежден перед отправкой на стороне сервера.Насколько я могу сказать, его отправка тоже определенно, так как метод send all в python отправляет all или выдает исключение в случае ошибки, и до сих пор он никогда не генерировал исключение.Таким образом, клиентская сторона запуталась.Мне нужно отправить файл с сервера, чтобы я не смог воспользоваться предложением Брайана.