Potrzebuję przeglądarki, aby pobrać pliki obrazów, tak jak robi to podczas klikania arkusza Excel.
Czy można to zrobić tylko przy użyciu programowania po stronie klienta?
<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>
Jak powinno działać w przypadku pobrania arkusza Excela (jakie przeglądarki robią)?
javascript
jquery
html
Amit
źródło
źródło
download
Atrybut.Odpowiedzi:
Korzystając z HTML5, możesz dodać atrybut „pobierz” do swoich linków.
<a href="https://stackoverflow.com/path/to/image.png" download>
Zgodne przeglądarki wyświetlą wówczas monit o pobranie obrazu o tej samej nazwie pliku (w tym przykładzie image.png).
Jeśli określisz wartość tego atrybutu, stanie się on nową nazwą pliku:
<a href="https://stackoverflow.com/path/to/image.png" download="AwesomeImage.png">
UPDATE: Jak wiosny 2018 nie jest to już możliwe dla cross-pochodzenie
href
s . Więc jeśli chcesz utworzyć<a href="https://i.imgur.com/IskAzqA.jpg" download>
w domenie innej niż imgur.com, nie będzie działać zgodnie z przeznaczeniem. Ogłoszenie o wycofaniu i usunięciu Chromeźródło
Udało mi się to uruchomić również w Chrome i Firefox, dołączając link do dokumentu.
źródło
document.body.appendChild(link)
nie będzie działać w przeglądarce Firefox. Dobrze jest też usunąć utworzony element za pomocądocument.body.removeChild(link);
afterlink.click()
setTimeout( function () { link.parentNode.removeChild( link ); },10 );
źródło
Zaktualizuj wiosnę 2018 r
Chociaż jest to nadal obsługiwane, od lutego 2018 r. Chrome wyłączył tę funkcję dla pobierania z różnych źródeł, co oznacza, że będzie działać tylko wtedy, gdy plik znajduje się w tej samej nazwie domeny.
Znalazłem obejście problemu pobierania obrazów z wielu domen po nowej aktualizacji Chrome, która wyłączyła pobieranie z wielu domen. Możesz zmodyfikować to w funkcję dostosowaną do swoich potrzeb. Możesz być w stanie uzyskać obraz typu MIME (jpeg, png, gif, itp.) Po przeprowadzeniu dalszych badań, jeśli zajdzie taka potrzeba. Może istnieć sposób na zrobienie czegoś podobnego z filmami. Mam nadzieję, że to komuś pomoże!
źródło
Bardziej nowoczesne podejście wykorzystujące Promise i async / await:
następnie
Znajdź dokumentację tutaj: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
źródło
źródło
To jest ogólne rozwiązanie twojego problemu. Ale jest jedna bardzo ważna część, że rozszerzenie pliku powinno pasować do twojego kodowania. I oczywiście ten parametr zawartości funkcji downlowadImage powinien być ciągiem zakodowanym w base64 twojego obrazu.
źródło
W 2020 używam Bloba do tworzenia lokalnej kopii obrazu, którą przeglądarka pobierze jako plik. Możesz to przetestować na tej stronie .
źródło
Spróbuj tego:
źródło
źródło
Możesz bezpośrednio pobrać ten plik za pomocą tagu kotwicy bez większego kodu.
Skopiuj fragment i wklej w edytorze tekstu i wypróbuj ...!
źródło
A co z użyciem funkcji .click () i tagu?
(Wersja skompresowana)
Teraz możesz go uruchomić za pomocą js. Nie otwiera się, jak inne przykłady, plików graficznych i tekstowych!
(wersja z funkcją js)
źródło
znalazłem to
<a href="link/to/My_Image_File.jpeg" download>Download Image File</a>
nie działa dla mnie. Nie wiem dlaczego.
Odkryłem, że możesz dołączyć
?download=true
parametr na końcu swojego łącza, aby wymusić pobranie. Myślę, że zauważyłem tę technikę używaną przez Dysk Google.W swoim łączu umieść
?download=true
na końcu swojego href.Możesz również użyć tej techniki, aby ustawić nazwę pliku w tym samym czasie.
W swoim łączu umieść
?download=true&filename=My_Image_File.jpeg
na końcu swojego href.źródło
Nie musisz pisać w tym celu js, po prostu użyj:
A sama przeglądarka automatycznie pobierze obraz.
Jeśli z jakiegoś powodu to nie zadziała, dodaj atrybut pobierania. Za pomocą tego atrybutu możesz ustawić nazwę pliku do pobrania:
źródło
download
Atrybut nie jest dostępna we wszystkich przeglądarkach.