В одном из проектов, над которыми я работал, была необходимость сделать ajax-загрузку изображений на облачный сервис imgur.com. Решил выложить этот функционал, возможно кому-то пригодится.
Первое, что нам необходимо сделать, это соответственно зарегистрироваться на данном сервисе и перейти в раздел API. После чего создать приложение (register an application).
В пункте Authorization type выбираем вариант «Anonymous usage without user autorization». После того как форма будет заполнена, мы получим данные для доступа: Client ID и Client Secret, они понадобятся позже.
Приложение мы создали, теперь необходимо сделать саму загрузку изображений, первым делом необходимо добавим два поля в нашу форму.
<!-- После выбора файла будет вызвана функция upload(), которая и осуществляет загрузку на imgur.com --> <input type="file" onchange="upload(this.files[0])"> <!-- В данное поле будет записана ссылка на изображение, после загрузки --> <input type="text" id="imgur_link" name="imgur_link" value="" />
Остается только реализовать javascript-функцию upload().
function upload(file) { if (!file || !file.type.match(/image.*/)) return; var fd = new FormData(); fd.append("image", file); fd.append("title", "Test application"); fd.append("client_secret", "{ваш client secret}"); var xhr = new XMLHttpRequest(); xhr.open("POST", "https://api.imgur.com/3/upload"); xhr.setRequestHeader('Authorization', 'Client-ID {ваш client id}'); xhr.onload = function() { $("#imgur_link").val(JSON.parse(xhr.responseText).data.link); } xhr.send(fd); }
На этом все готово. Можно тестировать.
Стоит отметить, что так как мы в функции upload() использовали элементы из библиотеки jQuery, то нам нужно её подключить. Конечно, можно было бы обойтись и без jQuery, но в данном проекте этого не требовалось.