Использование HTML5 и JavaScript, загрузка async довольно проста, я создаю логику загрузки вместе с вашим html, это не полностью работает, так как ему нужно api, но демонстрируйте, как это работает, если у вас есть конечная точка с именем /upload
от root вашего сайта, этот код должен работать для вас:
const asyncFileUpload = () => {
const fileInput = document.getElementById("file");
const file = fileInput.files[0];
const uri = "/upload";
const xhr = new XMLHttpRequest();
xhr.upload.onprogress = e => {
const percentage = e.loaded / e.total;
console.log(percentage);
};
xhr.onreadystatechange = e => {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log("file uploaded");
}
};
xhr.open("POST", uri, true);
xhr.setRequestHeader("X-FileName", file.name);
xhr.send(file);
}
Также имеется дополнительная информация о XMLHttpReques:
Объект XMLHttpRequest
Все современные браузеры поддерживают объект XMLHttpRequest. Объект XMLHttpRequest может использоваться для обмена данными с веб-сервером за кулисами. Это означает, что можно обновлять части веб-страницы без перезагрузки всей страницы.
Создать объект XMLHttpRequest
Все современные браузеры (Chrome, Firefox, IE7 +, Edge, Safari, Opera) имеют встроенный объект XMLHttpRequest.
Синтаксис для создания объекта XMLHttpRequest:
variable = new XMLHttpRequest ();
Доступ во всех доменах
Из соображений безопасности современные браузеры не разрешают доступ через домены.
Это означает, что и веб-страница, и файл XML, который она пытается загрузить, должны быть расположены на одном сервере.
В примерах в W3Schools все файлы XML, расположенные в домене W3Schools.
Если вы хотите использовать пример выше на одной из ваших собственных веб-страниц, загружаемые файлы XML должны находиться на вашем собственном сервере.
Подробнее , вы можете продолжить чтение здесь ...
breakpoint set -r . -s <PRODUCT_NAME>
(введите имя вашего приложения). lldb ответит с помощью чего-то вроде ...
Breakpoint 1: 4345 locations
Теперь просто нажмите кнопку «Продолжить» .
breakpoint set
- команда lldb для создания контрольных точек. Место указывается с использованием регулярного выражения (-r
) в именах функций / методов, в данном случае .
, которое соответствует любому методу. Опция -s
используется для ограничения объема вашего исполняемого файла (необходимо исключить фреймворки).
При запуске приложения lldb теперь будет прерываться всякий раз, когда приложение попадает в функцию из вашего основного исполняемого файла.
Чтобы отключить тип точек останова breakpoint delete 1
(введите правильный номер точки останова).
Существует много возможностей, но невозможно установить точки останова только для ваших функций. Вы можете попробовать:
breakpoint set -r '\[ClassName .*\]$'
добавить точки останова ко всем методам в классе
breakpoint set -f file.m -p ' *- *\('
, чтобы добавить точки останова в все методы в файле
Вы также можете использовать его со многими файлами:
breakpoint set -f file1.m -f file2.m -p ' *- *\('
Ярлык:
br se -f file1.m -f file2.m -p ' *- *\('
Вы можете добавить точки останова ко всем методам во всех классах с некоторым префиксом (и это может мне только ваши классы)
br se -r . -s Prefix
Эта строка (wzbozon answer ):
breakpoint set -n viewDidLoad
установит точки останова для всех методов viewDidLoad
во всех классах.
Я попытался, но не смог установить точки останова только на наши собственные методы.
В некоторых случаях удобнее устанавливать точки останова только на некоторые из методов.
Используя LLDB, мы можем, например, поставить точку останова на все методы ViewDidLoad по имени.
(lldb) breakpoint set -n ViewDidLoad
Здесь «-n» означает по имени.
Кроме того, мы можем поместить контрольные точки по имени селектора:
(lldb) breakpoint set -S alignLeftEdges:
Здесь «-S "означает селектор.