Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2018, 22:47
Новичок на форуме
Отправить личное сообщение для terminator1998 Посмотреть профиль Найти все сообщения от terminator1998
 
Регистрация: 31.07.2018
Сообщений: 1

Дать браузеру понять,что изображение нужно скачать
Я хочу,чтобы при переходе в ту вкладку,изображение скачивалось на компьютер,точнее бразеру давало понять,что изображение нужно не смотреть,а скачать
Вот код,которым я пытался это сделать:
location.href="http://habrastorage.org/storage1/cf1a57bd/e7cc2b34/b9d6fc1d/0a19729c.jpg"


Ну как мы видем при переходе,оно само не начинает скачиваться,а нужно нажимать ПКМ => Сохранить изображение как

P.S Если что имеется JQuery,но это я так,вдруг пригодится
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2018, 23:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<canvas id="demo" width="500" height="400"></canvas>

	<script>
var ctx = demo.getContext('2d'),
    w = demo.width,
    h = demo.height,
    img = new Image();

img.onload = function() {

    ctx.drawImage(img, 0, 0, w, h);
    download(demo, 'test.png');
    
}

img.crossOrigin = 'anonymous';
img.src = 'http://i.imgur.com/bbQ7uxV.jpg';

/// download canvas as image
function download(canvas, filename) {
    
    if (typeof filename !== 'string' || filename.trim().length === 0)
        filename = 'Untitled';
    
    var lnk = document.createElement('a'),
        e;
    
    lnk.download = filename;		
    lnk.href = canvas.toDataURL();	
    
    if (document.createEvent) {
        
        e = document.createEvent("MouseEvents");
        e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        
        lnk.dispatchEvent(e);
        
    } else if (lnk.fireEvent) {
        
        lnk.fireEvent("onclick");
    }
}

	</script>


5 минут гугла и можно найти множество решений. canvas, base64
Ответить с цитированием
  #3 (permalink)  
Старый 01.08.2018, 01:03
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Если картинка лежит на том же сайте (same-origin), то можно атрибутом download:
<a href="/forum/images/ca_serenity/misc/logo.gif" download="filename.jpg">скачать</a>

Поддержка хорошая, но не идеальная: https://caniuse.com/#feat=download

Последний раз редактировалось Белый шум, 01.08.2018 в 01:08.
Ответить с цитированием
  #4 (permalink)  
Старый 01.08.2018, 10:00
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

j0hnik,
так не получится, если картинка с другого сайта.
Ответить с цитированием
  #5 (permalink)  
Старый 01.08.2018, 14:08
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от Rise Посмотреть сообщение
j0hnik,
так не получится, если картинка с другого сайта.
Да вроде сохранило у меня...
Ответить с цитированием
  #6 (permalink)  
Старый 01.08.2018, 14:22
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Белый шум,
получится если есть заголовки доступа, ну как у кросс-доменного ajax.
Ответить с цитированием
  #7 (permalink)  
Старый 01.08.2018, 15:25
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

если в заголовке ответа у кроссдоменной картинки нет подходящего "Access-Control-Allow-Origin", то без помощи своего сервера никак не обойтись. Ну а в таком случае и канва не понадобится, сразу напрямую атрибут download
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно реализовать верстку и front end, под определенные экраны нужно сделать cms playsintez Работа 7 20.07.2018 16:21
drag-and-drop и position:fixed dotwatt Элементы интерфейса 5 05.12.2012 08:44
Что нужно дописать в коде чтобы изображение менялось постоянно. vadim90k (X)HTML/CSS 22 09.07.2012 16:33