Я сделал много тестов, поэтому я получил решение, как я покажу в коде ниже, но если вы знаете лучшее решение, покажите мне.
private fun postImage() {
user_register_button.setOnClickListener {
if (selectedImage != null) {
var imageFile = File(baseContext.cacheDir, "${System.currentTimeMillis()}")
imageFile.createNewFile()
var arrayOutputStream = ByteArrayOutputStream()
getBitmapFromUri(selectedImage).compress(Bitmap.CompressFormat.JPEG, 100, arrayOutputStream)
var outputStream = FileOutputStream(imageFile)
outputStream.write(arrayOutputStream.toByteArray())
outputStream.flush()
outputStream.close()
var descriptionBody = RequestBody.create(MediaType.parse("image/*"), imageFile)
val imagePart = MultipartBody.Part.createFormData("file", "${System.currentTimeMillis()}", descriptionBody)
ImageRequest(getString(R.string.base_url_file_upload)).postImageFile(
image = imagePart, delegate = object : Delegate<ResponseBody> {
override fun onSuccessFull(isSuccessFull: Boolean, response: ResponseBody?, message: String?) {
if (isSuccessFull) {
Log.i("ResponseBody", response.toString())
} else {
Log.i("ResponseError", message)
}
}
override fun onFailure(exception: Throwable) {
Log.i("Error", exception.message)
exception.printStackTrace()
}
})
}
}
}
@Throws(IOException::class)
private fun getBitmapFromUri(uri: Uri): Bitmap {
val parcelFileDescriptor = contentResolver.openFileDescriptor(uri, "r")
val fileDescriptor = parcelFileDescriptor.fileDescriptor
val image = BitmapFactory.decodeFileDescriptor(fileDescriptor)
parcelFileDescriptor.close()
return image
}
Импульс. JavaScript был вокруг в течение приблизительно 15 лет, и производители браузера работали в течение приблизительно 15 лет, чтобы заставить его работать в их браузерах.
, Если бы конкурент приехал, это должно было бы действительно принести что-то новое для таблицы, чтобы убедить всех a) принимать его, b) жить с блокировкой всех пользователей более старых браузеров как IE7, Firefox 3.0, Chrome 1.0 и т.д. и c) находить замены для всех существующих библиотек как jQuery, прототип, extJS и т.д.
Короче говоря: нам не нужен другой Стандарт, давайте скорее улучшим JavaScript и основывайтесь на богатой основе, которая уже существует вместо того, чтобы отшатываться от каменного века снова.
Существует! Которые приходят на ум, являются Flash, ActiveX и Java... Но они все имеют их недостатки. Главным образом безопасность и интеграция с browser/DOM.
Flash и Java живут в их собственном небольшом мире дизайном (и обратиться к проблемам безопасности). Они не могут изменить HTML вокруг них. ActiveX имеет доступ к DOM, но также и всему остальному на Вашем компьютере.
JavaScript, кажется, нашел хороший баланс между гибкостью и безопасностью, это может тривиально взаимодействовать и изменить страницы HTML/CSS, сделать "безопасные" сети, имеет достойную стандартную библиотеку (который имеет вещи как JSON, сети XmlHttpRequest'sih, управление DOM, и так далее). Самое главное это доступно в в основном всех неопределенно современных браузерах на всех платформах, последовательным способом (по сравнению с CSS)
существуют проблемы с JavaScript, но ничего серьезного. Самой большой является производительность. Загрузите страницу комментария на Digg и следите за Вашим использованием ЦП. Шанс - это, будут 100% одного ядра процессора. Существуют проекты улучшить это, как SquirrelFish, TraceMonkey и другие странно именованные вещи. Но производительность соответствует, чтобы сделать некоторые чрезвычайно впечатляющие вещи (электронная таблица Google, например).
В основном, JavaScript является большим, и это - недостатки, не являются почти столь же большими как другие конкуренты.
JavaScript победил, потому что он был представлен Netscape в период, когда они имели выше 90%-й доли рынка процента. IE и другие браузеры не имели никакого выбора, кроме как поддерживать его также.
, Если бы новый язык должен быть представлен, это должно было бы быть или по соглашению между всеми крупными поставщиками браузера, или в период, где единственный браузер имеет достаточно доли рынка для проталкивания его.
Microsoft, возможно, вероятно, вытянула его прочь несколько лет назад, когда IE имеет чрезвычайно большую долю рынка (перед повышением Firefox и Safari), но они приняли решение вместо этого (по стратегическим причинам) позволить браузеру застояться.
Сегодня, новый язык потребовал бы, чтобы соглашение, по крайней мере, между Mozilla, IE и Safari нарастило обороты, и я думаю, что это очень маловероятно. Поставщики браузера инвестировали много ресурсов в оптимизации, совместимость, тестирующая и так далее на JavaScript - почему они должны хотеть запуститься с нуля с полностью нового языка - и иметь для поддержки двух языков параллельно в течение будущих десятилетий? Стоимость значительно перевешивает любые преимущества.
Так или иначе, довольно нереалистично полагать, что новый язык, разработанный с нуля, мог быть значительно лучше, чем JavaScript.
Покажите мне другой язык, который не уверен в библиотеках?
C, C++, C#, VBs... все полагаются на библиотеки. Единственная разница - то, что они часто идут со стандартным набором библиотек.
Так делают мы действительно хотим, стандартный набор библиотек? То, что мы в настоящее время получаем, является диапазоном наборов библиотеки (jQuery, прототип, extjs, mootools, и т.д.). Это - хорошая вещь так как мы, которых разработчики получают для выбора того, который удовлетворяет нашим потребностям. Кроме того, эти библиотеки могут быть включены и развиты без изменений в клиентском компоненте.
я не могу думать ни о каком принуждение функция языка, отсутствующая в JavaScript. Путем принуждения я имею в виду так земля, сокрушительно важная, что я был бы готов отчуждать те браузеры, которые не поддерживают ее.
, Если бы хороший конкурент прибыл до 1999 (ECMAScript 3), это, вероятно, была бы связь между теми двумя.
Я рекомендую Вам просмотреть презентация Douglas Crockford’s о Language” Программирования JavaScript “The для приобретения знаний об истории JavaScript.
Я предполагаю, потому что спрос на него должен был бы быть огромным, чтобы браузеры реализовали его.
, В конце концов, это - браузеры, которые обрабатывают и выполняют JavaScript, и у Вас должна была бы быть большая сумма сайтов с помощью языка для создания браузеров заинтересованными реализацией его. С другой стороны никто не использовал бы его, если бы не было никакой поддержки браузера во-первых.
Я думаю, что JavaScript (ECMAScript) с его C как синтаксис так популярен по некоторым причинам C:
Создание нового языка, который обеспечит многие текущие "встроенные" библиотеки, всегда опасно, поскольку оно начинает ограничивать будущую применимость языка и делает изучение основного языка тяжелее.
Это было бы еще более проблематично для клиентского языка браузера, потому что разработчики языка не могут возможно знать, как язык может использоваться в будущем.
я думаю JavaScript, язык прекрасен в его текущей роли "связующего звена", которое связывает так многих другой клиент sode технологии.
нет никаких других конкурентов, потому что, в то время как JavaScript не прекрасен, он делает задание.
Существуют другие языки для клиентских сценариев, но AFAIK, ни один не интегрируется в браузер.
И Flash и Silverlight имеют их собственные Языки. Flash имеет ActionScript, в то время как Silverlight имеет многих и всю эту работу под ДОЛЛАРОМ включая Python и Ruby.
К Вашей второй точке относительно , почему , более конкретно Вы упоминаете уверенность в библиотеках JS как дефект на языке; Библиотеки популярны, не потому что язык, если повреждено, но потому что стандартный API повреждается. Существование такого великого освобождает, основывается на питании языка.
нет ничего особенно неправильно с JavaScript, он имеет некоторые функции, которые до совсем недавно были бы тайными или академическими. Первый класс функционирует, например.
кроме того, повсеместность / массовое существующее развертывание во время выполнения является очень востребованной функцией. ;)
я сказал бы, что это вызвано тем, что клиентская веб-разработка является все еще очень молодым ответвлением программирования. при рассмотрении его только теперь, это стало более широко распространенным, так как мы переместились в более быстрые "межтрубы" :) и мы не используем модемы больше.
и проблема для clent базировался, веб-разработка состоит в том, что это не до разработчика, какую платформу он будет использовать, но это зависит от производителей браузера. и они изменяются медленный.
упадок сценария VB был, по-моему, своим VB-innes. слишком много ненужного материала. Что касается JavaScript это назреет, но это - запуск.
Я думаю, что это имеет отношение к стандартизации, потому что во время последней браузерной войны (т.е. v. netscape) было два, ECMA Netscape (+1 точка Фаната для Вас, если Вы знали, что это было настоящим именем для JavaScript), и JScript Microsoft, очевидно, ECMA (JavaScript) добился успеха и стал defacto стандартом.
Теперь, у нас есть другая происходящая браузерная война и каждый из 2 (3, если Вы считаете Chrome 12%-м FFS), крупные конкуренты 3 полностью (с несколькими пограничными случаями) поддерживают JavaScript.
Поддержка браузера. Если не технология MS это, скорее всего, не войдет в IE. Если это не находится в IE затем, никто не может использовать его. Если это будет технология MS, то, скорее всего, только IE будет иметь право использовать его, поскольку это будет закрытый исходный код и собственный. Если только IE будет поддерживать его затем, то только некоторые разработчики будут использовать его.
Для оспаривания JavaScript это должно работать столь же легко и более последовательно через все главные веб-браузеры. Без поддержки браузера любая новая клиентская веб-технология предназначена для сбоя.
Мое предположение то, что его повсеместность и простота интеграции в любом новом проекте агента пользователя. Это прибывает созданное почти во все браузеры, таким образом, Вы не должны загружать/устанавливать/настраивать ничего, чтобы иметь его выполнение. после того как Вы смотрите на агенты пользователя от рабочих столов (Wii, iPhone, Windows Mobile, n95 и т.д.), доступность любого спорения высыхает быстрый - таким образом, Вы кодируете для HTML и JavaScript becuase, это будет работать большую часть времени.
Я соглашаюсь с Michael, мы должны улучшить JavaScript, не волноваться о конкурентах, потому что там не будут никем, на самом деле даже Javascript 2.0 кажется так далеко от достигающей действительности.
, Так как JavaScript является таким неоднозначным языком, мы можем создать библиотеки (jQuery) и даже абстракции (Цель-J) и не волноваться по поводу всех проблем, что JavaScript имеет в его основе.
Спустя столько лет у нас даже нет CSS, реализованного одинаково во всех браузерах, то же самое касается JavaScript, IE имеет одну модель, а остальные браузеры имеют другую модель (я имею в виду, как Event Обработчики и присоединение событий).
Если появится новый конкурент, у него нет ни шансов, ни времени, как у css и javascript.