href:blob...

  • Автор темы Автор темы andrey-ka
  • Дата начала Дата начала
  • Теги Теги
    blob

andrey-ka

Client
Регистрация
03.06.2018
Сообщения
862
Реакции
247
Баллы
43
Подскажите, пожалуйста, как можно получить содержимое по гиперссылке вида:
blob:https://5.145.12.11/568233a1-8b13-48b3-84d5-cca045ae384f ?

в браузере при нажатии на такую ссылку происходит скачивание файла.
В зенке при нажатии на такую ссылку не происходит ничего. В трафике тоже нет ничего, понимаю, что нужные данные уже скачаны и просто JS'ом отдаются в виде файла.
 
В трафике тоже нет ничего, понимаю, что нужные данные уже скачаны и просто JS'ом отдаются в виде файла.
Собственно, blob'ы обычно уже хранят в себе файл, например, картинку. Нужен только скрипт который его сохранит.
https://stackoverflow.com/questions...-data-as-file-using-javascript-from-a-browser
 
Последнее редактирование:
Спасибо.
Разобрался, зенка его скачивает как файл и помещает в "папка для загрузки".
Я ее задаю через кубик и потом в ней ищу нужный файл.
 
Собственно, blob'ы обычно уже хранят в себе файл, например, картинку. Нужен только скрипт который его сохранит.
https://stackoverflow.com/questions...-data-as-file-using-javascript-from-a-browser
А есть решение на шарпе как сохранять картинки из таких ссылок? Не понимаю как скрипт использовать или привязать к коду C#
 
Добавляешь кубик Свой JavaScript код (выполнять: при создании окна страницы, всё время, во всех вкладках):
JavaScript:
Развернуть Свернуть Копировать
window.my_func_name = function(first, second) {
    return first + second + ".000";
};

Потом из C# делаешь вызов:
C#:
Развернуть Свернуть Копировать
int csharp_first = 10;
int csharp_second = 20;
string data = instance.ActiveTab.MainDocument.EvaluateScript("return window.my_func_name(" + csharp_first + ", " + csharp_second +");");

И получаешь результат в переменной data.
Вроде всё так должно работать )
 
  • Оценить
Реакции: orka13 и radv
А без кубика можно обойтись?
Как-то так примерно:
C#:
Развернуть Свернуть Копировать
int csharp_first = 10;
int csharp_second = 20;
string data = instance.ActiveTab.MainDocument.EvaluateScript("(function(first, second) {return first + second + ".000";})(" + csharp_first + ", " + csharp_second +");");

PS: у EvaluateScript ещё есть третий параметр altWay - если вдруг код не будет выполняться, то стоит попробовать его выставить в true.
 
  • Оценить
Реакции: radv
Как-то так примерно:
я правильно понимаю, что в
C#:
Развернуть Свернуть Копировать
function(first, second)
Это вызов функции с нужными параметрами?
Имя функции надо указывать?

а в
C#:
Развернуть Свернуть Копировать
{return first + second + ".000";}
ее тело для выполнения?
то что между фигурными скобками с return в начале и имя функции тогда указывать не обязательно

а в этом коде передаются сами значения входных параметров с + по краям?
C#:
Развернуть Свернуть Копировать
(" + csharp_first + ", " + csharp_second +");

и если у меня функция
HTML:
Развернуть Свернуть Копировать
function downloadFile(blobUrl, fileName) {
    const blob = new Blob(blobUrl, { type: "image/jpeg" });
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement("a");

    a.href = url;
    a.download = fileName;

    a.click;

    a.remove();

    document.addEventListener("focus", w => { window.URL.revokeObjectURL(blob) });
}
то код будет таким
C#:
Развернуть Свернуть Копировать
string data = instance.ActiveTab.MainDocument.EvaluateScript("(function(blobUrl, fileName) {return ВСЕ тело функции, например из переменной})(" + Параметр 1 для blobUrl+ ", " + Параметр 2 для fileName +");");
 
Это вызов функции с нужными параметрами?
Да

Имя функции надо указывать?
Когда вокруг определения функции стоят круглые скобки и вызов идет сразу после функции, то имя не нужно указывать (или нельзя, не знаю точно).

ее тело для выполнения?
Да

а в этом коде передаются сами значения входных параметров с + по краям?
Да, символ "+" тут нужен как конкатенация в C#. Можно использовать String.Format и передавать через него, тогда не нужно будет конкатенацию делать.

то код будет таким
Вроде как да, визуально выглядит что всё окей, нужно уже тестировать.
Но вначале нужно будет убедиться что этот код рабочий, а сделать это очень просто - через кубик "Свой JavaScript код" (выполнять: на текущей странице), просто там и определение функции вписать и её вызов. Можно даже в таком же стиле как тут (как передаем в метод EvaluateScript).

PS: если что - не обязательно в одну строчку запихивать тело функции.

Update: только сейчас заметил - там return необязательный, и тело функции должно быть как в примере на JS выше, return НЕ должен стоять перед началом функции!!!

Неправильно:
C#:
Развернуть Свернуть Копировать
string data = instance.ActiveTab.MainDocument.EvaluateScript("(function(blobUrl, fileName) {return ВСЕ тело функции, например из переменной})(" + Параметр 1 для blobUrl+ ", " + Параметр 2 для fileName +");");

Правильно:
C#:
Развернуть Свернуть Копировать
string data = instance.ActiveTab.MainDocument.EvaluateScript("(function(blobUrl, fileName) {ВСЕ тело функции, например из переменной, в том числе в конце МОЖЕТ быть return что-то;})(" + Параметр 1 для blobUrl+ ", " + Параметр 2 для fileName +");");
 
  • Оценить
Реакции: radv
Вроде как да, визуально выглядит что всё окей, нужно уже тестировать ) Но вначале нужно будет убедиться что этот код рабочий, а сделать это очень просто - через кубик "Свой JavaScript код" (выполнять: на текущей странице), просто там и определение функции вписать и её вызов. Можно даже в таком же стиле как тут (как передаем в метод EvaluateScript).

PS: если что - не обязательно в одну строчку запихивать тело функции.
Благодарю, с этим уже понятнее куда двигаться дальше. Проверить работу функции скрипта это само собой :-) иначе можно просто нерабочий код тестировать.:dy:
 
Благодарю, с этим уже понятнее куда двигаться дальше.
Напиши потом тут, пожалуйста, итоговое решение как скачать blob.
Думаю, многим в будущем это пригодится :)
 
  • Оценить
Реакции: radv
Напиши потом тут, пожалуйста, итоговое решение как скачать blob.
Думаю, многим в будущем это пригодится :-)
Сначала надо скрипт сделать и отладить, а потом выложу свой рабочий вариант.
 
Спасибо.
Разобрался, зенка его скачивает как файл и помещает в "папка для загрузки".
Есть рабочий вариант скачивания blob ссылки? Может мне тогда меньше свои скрипты писать/искать и отлаживать придется )
 
Всем привет. Тоже столкнулся с blob. но задача наоборот, загрузить в яндекс картинки файл изображения... может кто то подскажет с какой стороны подойти.
спасибо.
94850
 
  • Оценить
Реакции: radv

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)