Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ini_set('always_populate_raw_post_data', 'On');
- define('UPLOAD_DIR', '/var/www/blog/htdocs/uploaded/');
- define('UPLOAD_LOCATION', '/uploaded/');
- if($_SERVER['REQUEST_METHOD'] != 'POST')
- die_msg('Invalid request.');
- $fname = tempnam(sys_get_temp_dir(), "img_upload");
- if(save_to_file($fname) === false)
- die_msg('Failed to save file.');
- $mime = mime_content_type($fname);
- if(!preg_match('#^image/(.+)#', $mime, $ext)){
- unlink($fname);
- die_msg('Unable to determine file type.');
- }
- $ext = '.'.$ext[1];
- while(file_exists($path = UPLOAD_DIR . ($name = uniqid(). $ext)));
- if(!rename($fname, $path)){
- unlink($fname);
- die_msg('Unable to rename file.');
- }
- header('Image-Link: ' . build_url_for(UPLOAD_LOCATION, $name));
- function die_msg($msg){
- header('Error-Message: ' . $msg, true, 500);
- exit;
- }
- function save_to_file($name, $size_hint = 16384){
- if(!($src = fopen('php://input', 'rb')))
- return false;
- if(!($dst = fopen($name, 'wb'))){
- fclose($src);
- return false;
- }
- $wrote = 0;
- while(!feof($src)){
- if(($buf = fread($src, $size_hint)) === false || ($t = fwrite($dst, $buf)) === false){
- $wrote = false;
- break;
- }
- $wrote += $t;
- }
- fclose($src);
- fclose($dst);
- if($wrote === false)
- unlink($name);
- return $wrote;
- }
- function build_url_for($name){
- $args = func_get_args();
- $args = preg_replace('#/{2,}#', '/', implode('/', $args));
- if(substr($args, 0, 1) != '/')
- $args = '/' . $args;
- $is_https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off';
- $url = 'http';
- if($is_https)
- $url .= 's';
- $url .= '://';
- if(isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['PHP_AUTH_PW'])){
- $url .= (isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '') .
- ':' . (isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '');
- }
- $url .= $_SERVER['HTTP_HOST'];
- if(($is_https && $_SERVER['SERVER_PORT'] != 443) || (!$is_https && $_SERVER['SERVER_PORT'] != 80))
- $url .= ':' . $_SERVER['SERVER_PORT'];
- return $url . $args;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement