Привет!
Многим из нас нужно иногда расшаривать свои скриншоты, и вместо того, чтоб слать по имейлу/скайпу файл скриншота, мы можем использовать сторонние сервисы, коих немало, и хранить фото там.
Но, благодаря ayurganov, мы можем настроить простой сервис Gyazo на своём
Я пошёл дальше и развил тему тем, что скриншоты мои хранятся на RackSpace CloudFiles — CDN от RackSpace, который без проблем выдержит любой «хабраэффект». А линк к файлам красиво шортится через Bit.ly.
<a rel="nofollow" name="habracut">
Для использования этого скрипта нужно иметь:
- RackSpace контейнер
- Аккаунт в bit.ly
- Любой
с поддержкой PHPхостинг
- Создадим RackSpace контейнер и разрешим ему расшаривать файлы по CDN:
- В настройках RackSpace аккаунта находим свой API ключ.
- В аккаунте bitly в настройках включаем возможность использования API и там же находим имя пользователя и пароль.
- На хостиг копируем содерджимое репозитория
- По статье http://habrahabr.ru/blogs/soft/132937/ настриваем клиент.
Код главного приложения выглядит следующим образом:
<?php require('files/cloudfiles.php'); //Bitly credentials $bitly_name='##Bitly_name'; $bitly_key='##Bitly_key'; $gyazo_url = $_SERVER['SERVER_NAME']; $company_name='my_company'; //Rackspace Credentials $username='##Rackspace_UN'; $key='##Rackspace_key'; $container='##Rackspace_container'; /* returns the shortened url */ function get_bitly_short_url($url,$login,$appkey,$format='txt') { $connectURL = 'http://api.bit.ly/v3/shorten/?login='.$login.'&apiKey='.$appkey.'&uri='.urlencode($url).'&format='.$format; return curl_get_result($connectURL); } /* returns a result form url */ function curl_get_result($url) { $ch = curl_init(); $timeout = 5; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $data = curl_exec($ch); curl_close($ch); return $data; } //When file is uploaded if(isset($_FILES['imagedata']['name'])) { $name = substr(md5(time()), -28).'.'.$company_name.'.png'; //Store it on Rackspace if ($tempname = $_FILES['imagedata']['tmp_name']){ $auth = new CF_Authentication($username, $key); $auth->authenticate(); $conn = new CF_Connection($auth); $container = $conn->create_container($container); $object = $container->create_object($name); $object->load_from_filename($tempname); $fileuri = $container->make_public(); $imageu = $object->public_uri(); //Output file url echo $gyazo_url."?limage=$imageu"; } }else { $limage=$_GET['limage']; $shorten = get_bitly_short_url($limage,$bitly_name,$bitly_key); echo "<head> <link rel='shortcut icon' href=$limage> </head> <style type='text/css'> #url1, #url2 { width:150px; } #url2 { } .copy { display:inline-block; height:16px; width:16px; background:url(files/copy.png); position:relative; top:3px; } .copy:hover { opacity:0.5; cursor:pointer; } .copied { display:inline-block; height:16px; width:16px; background:url(files/copied.png); position:relative; top:3px; margin-left:5px; } .wrap { display:block; width:300px; } </style> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> <script src='files/jquery.zclip.min.js'></script> <script type='text/javascript'> $(document).ready(function(){ $('#copy1').zclip({ path:'files/ZeroClipboard.swf', copy:$('#url1').val(), afterCopy:function(){ $(this).after('<span class=copied></span>'); $(this).next('.copied').fadeOut('slow'); }, }); $('#copy2').zclip({ path:'files/ZeroClipboard.swf', copy:$('#url2').val(), afterCopy:function(){ $(this).after('<span class=copied></span>'); $(this).next('.copied').fadeOut('slow'); }, }); $('#url1, #url2').click(function(){ $(this).select(); }); }); </script> <span class='wrap'><input id='url1' type='text' value=$shorten> <span class='copy' id='copy1'></span></span> <hr /> <img src=$limage>"; } ?>
В браузере скриншоты будут выглядить следующим образом:
И нажав на кнопочку возле линка, флешка скопирует его в буфер обмена. Далее, этот линк можно легко передать кому нужно, вставить в хабрахабр или джиру.
В общем, очень удобно! Рекомендую!
ЗЫ. Не пугайтесь моего шортенера qblx.co — это тот же bit.ly, только с личным доменом.
Автор: korjik