Мне нужен браузер для загрузки файлов изображений так же, как при нажатии на лист Excel.
Есть ли способ сделать это, используя только программирование на стороне клиента?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.10.2.js">
$(document).ready(function () {
$("*").click(function () {
$("p").hide();
});
});
</script>
</head>
<script type="text/javascript">
document.onclick = function (e) {
e = e || window.event;
var element = e.target || e.srcElement;
if (element.innerHTML == "Image") {
//someFunction(element.href);
var name = element.nameProp;
var address = element.href;
saveImageAs1(element.nameProp, element.href);
return false; // Prevent default action and stop event propagation
}
else
return true;
};
function saveImageAs1(name, adress) {
if (confirm('you wanna save this image?')) {
window.win = open(adress);
//response.redirect("~/testpage.html");
setTimeout('win.document.execCommand("SaveAs")', 100);
setTimeout('win.close()', 500);
}
}
</script>
<body>
<form id="form1" runat="server">
<div>
<p>
<a href="http://localhost:55298/SaveImage/demo/Sample2.xlsx" target="_blank">Excel</a><br />
<a href="http://localhost:55298/SaveImage/demo/abc.jpg" id="abc">Image</a>
</p>
</div>
</form>
</body>
</html>
Как это должно работать при загрузке листа Excel (что умеют браузеры)?
javascript
jquery
html
Амит
источник
источник
download
Атрибут.Ответы:
Используя HTML5, вы можете добавить к своим ссылкам атрибут «скачать».
<a href="https://stackoverflow.com/path/to/image.png" download>
Совместимые браузеры предложат загрузить изображение с тем же именем файла (в этом примере image.png).
Если вы укажете значение для этого атрибута, оно станет новым именем файла:
<a href="https://stackoverflow.com/path/to/image.png" download="AwesomeImage.png">
ОБНОВЛЕНИЕ: По состоянию весны 2018 года это уже не возможно для кросса-происхождение
href
с . Поэтому, если вы хотите создать<a href="https://i.imgur.com/IskAzqA.jpg" download>
на другом домене, а не imgur.com, он не будет работать должным образом. Объявление о прекращении поддержки и удалении Chromeисточник
Мне удалось заставить это работать в Chrome и Firefox, добавив ссылку на документ.
источник
document.body.appendChild(link)
его опустите, он не будет работать в firefox. Также хорошо удалить созданный элемент с помощьюdocument.body.removeChild(link);
afterlink.click()
setTimeout( function () { link.parentNode.removeChild( link ); },10 );
источник
Обновление Весна 2018
Хотя это все еще поддерживается, по состоянию на февраль 2018 года хром отключил эту функцию для загрузки из разных источников, что означает, что это будет работать, только если файл находится на том же доменном имени.
Я нашел обходной путь для загрузки междоменных изображений после нового обновления Chrome, которое отключило междоменную загрузку. Вы можете преобразовать это в функцию в соответствии со своими потребностями. Возможно, вы сможете получить изображение mime-типа (jpeg, png, gif и т. Д.) С дополнительным исследованием, если вам нужно. Возможно, есть способ сделать что-то подобное и с видео. Надеюсь, это кому-то поможет!
источник
источник
Более современный подход с использованием Promise и async / await:
затем
Документацию можно найти здесь: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
источник
Это общее решение вашей проблемы. Но есть одна очень важная часть: расширение файла должно соответствовать вашей кодировке. И, конечно же, этот параметр содержимого функции downlowadImage должен быть строкой вашего изображения в кодировке base64.
источник
В 2020 году я использую Blob для создания локальной копии изображения, которое браузер загрузит в виде файла. Вы можете протестировать это на этом сайте .
источник
Попробуй это:
источник
источник
Вы можете напрямую загрузить этот файл с помощью тега привязки без особого кода.
Скопируйте фрагмент, вставьте в текстовый редактор и попробуйте ...!
источник
А как насчет использования функции .click () и тега?
(Сжатая версия)
Теперь вы можете запустить его с помощью js. Он также не открывает, как другие примеры, графические и текстовые файлы!
(версия js-функции)
источник
я нашел это
<a href="link/to/My_Image_File.jpeg" download>Download Image File</a>
у меня не сработало. Не знаю почему.
Я обнаружил, что вы можете включить
?download=true
параметр в конце ссылки для принудительной загрузки. Думаю, я заметил, что эту технику использует Google Диск.В вашей ссылке включите
?download=true
в конце вашего href.Вы также можете использовать этот метод для одновременной установки имени файла.
В вашей ссылке включите
?download=true&filename=My_Image_File.jpeg
в конце вашего href.источник
Для этого не нужно писать js, просто используйте:
И браузер сам автоматически скачает изображение.
Если по какой-то причине не работает, добавьте атрибут загрузки. С помощью этого атрибута вы можете установить имя для загружаемого файла:
источник
download
Атрибут поддерживается не во всех браузерах.