В моем приложении для Android мне нужно загрузить изображение в папку Assets/Drawable/raw на сервер. Я попробовал следующее:Изображение, загруженное с места для приложения Android, кажется поврежденным
InputStream fileInputStream;
if(imageChanged) {
File file = New File("filename");
fileInputStream = new FileInputStream(file);
}else {
fileInputStream = ctx.getAssets().open("default.png");
}
int bytesAvailable;
byte[] buffer = new byte[102400];
while((bytesAvailable = fileInputStream.available()) > 0) {
int bufferSize = Math.min(bytesAvailable, 102400);
if(bufferSize<102400){
buffer = new byte[bufferSize];
}
int bytesRead = fileInputStream.read(buffer, 0,bufferSize);
dos.write(buffer, 0, bytesRead);
}
Это выполняет отлично. Я могу читать входной поток и записывать байты в DataOutputStream, изображение загружается на сервер.
Во всяком случае, изображение на сервере, кажется, поврежден - (. Закачанном в «другом» блоке «если» блок изображение не поврежденный) только для изображения по умолчанию
Я также попытался размещение по умолчанию .png в «сырой» папку и попытался ниже
fileInputStream = ctx.getResources().openRawResource(R.drawable.default);
Тот же результат здесь - изображение на сервере поврежден.
Я начинаю сомневаться, если это потому, что default.png находится в прикладном пространстве.
Могу ли я получить некоторую помощь по правильному способу загрузки изображения в пространство приложения (drawable/asset/raw)?
спасибо!
Ними
Привет, Алеадам, спасибо за подробный ответ. Я пробовал в обоих направлениях, с небольшой разницей - пытался записать в DataOutputStream HttpURLConnection. Не повезло. Во всяком случае, я чувствую, что вы правы в том, что если он записывается в SDCard из прикладного пространства, он также должен быть доступен для записи на сервер. Будете продолжать. – nimmi