Мне нужно загружать файлы с использованием собственного кода, библиотеки не предпочтительны, так как я хочу узнать как можно больше.
Я выбираю любой файл, используя следующее намерение:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, FILE_REQUEST_CODE);
Я получаю путь и расширение onActivityResult, используя следующий код:
Uri uri = data.getData();
assert uri != null;
String uriString = uri.toString();
File myFile = new File(uriString);
String path = myFile.getAbsolutePath();
String displayName = null;
if (uriString.startsWith("content://"))
{ try (Cursor cursor = getContentResolver().query(uri, null, null, null, null))
{ if (cursor != null && cursor.moveToFirst()) { displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); }
}
}
else if (uriString.startsWith("file://"))
{
displayName = myFile.getName();
}
Log.i("response", "path:\t" + path + " display name:\t" + displayName);
String[] content_type = displayName.split("\\.");
Log.i("response", "content type:\t" + content_type[1] + "path:\t");
Здесь content_type[1]
даст мне тип файла, чтобы я мог проверить, выбраны ли изображения.
Я использую следующий код для сжатия файлов изображений:
Bitmap bitmap = BitmapFactory.decodeFile("");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 60, bos);
часть, где мне нужна помощь.
Я совершенно не понимаю, как кодировать свойства HTTPURLConnection
...
Мне нужно установить reqestmethod
как POST
ReadTimeout ConnectTimeout
Какие другие необходимые свойства и как получить прогресс при загрузке файла.
Только часть асинхронной задачи, в которой файл записывается в выходной поток, тип содержимого (если это файл в формате pdf exel и т. Д.) И чтение ответа с сервера. Пожалуйста, объясните подробно