Загрузите любой тип файла, используя асинхронную задачу, показывающую индикатор выполнения. Если файл имеет тип изображения сжимать перед отправкой - PullRequest
0 голосов
/ 31 августа 2018

Мне нужно загружать файлы с использованием собственного кода, библиотеки не предпочтительны, так как я хочу узнать как можно больше. Я выбираю любой файл, используя следующее намерение:

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 и т. Д.) И чтение ответа с сервера. Пожалуйста, объясните подробно

...