Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Загрузка картинок на сервер
Задача: Вам нужно загрузить на сервер картинки и сложить их в определенную папку. Поддержка мультизагрузки и создания папок с номером года. Возвращает готовый тег IMG для вставки в html код.
<?php
define("charset","utf-8"); // windows-1251 или utf-8
mb_internal_encoding(charset);
header("Content-type: text/html; charset=".charset);
global $ImageMaxSize;
$ImageMaxSize=3000;
if (!empty($_FILES)) {
foreach ($_FILES as $arr) { // array(1) { ["fil_mnp"]=> array(5) { ["name"]=> array(2) { [0]=> string(5) "1.txt" [1]=> string(5) "2.txt" } ["type"]=> array(2) { [0]=> string(10) "text/plain" [1]=> string(10) "text/plain" } ["tmp_name"]=> array(2) { [0]=> string(39) "/var/www/htmlweb/data/mod-tmp/phponSGs9" [1]=> string(39) "/var/www/htmlweb/data/mod-tmp/phpSbNiGI" } ["error"]=> array(2) { [0]=> int(0) [1]=> int(0) } ["size"]=> array(2) { [0]=> int(2798014) [1]=> int(2798014) } } }
if (is_array($arr['name'])) {// мультизагрузка
for ($i = 0; $i < count($arr['name']); $i++) {
Save1File(['name' => $arr['name'][$i], 'type' => $arr['type'][$i],
'tmp_name' => $arr['tmp_name'][$i], 'error' => $arr['error'][$i], 'size' => $arr['size'][$i]]);
}
} else {
Save1File($arr);
}
}
}
function Save1File($arr)
{
//echo "<br>f_tmp=" . $mURL;
if (!empty($arr['name']) && $arr['error']) {
if (!empty($arr['name']) && ($arr['error'] == 1 || $arr['error'] == 2)) {
global $ImageMaxSize;
$ImageMaxSize = (!empty($_REQUEST['MAX_FILE_SIZE']) ? $_REQUEST['MAX_FILE_SIZE'] / 1000 : (!empty($_REQUEST['max_file_size']) ? $_REQUEST['max_file_size'] / 1000 : (!empty($_SESSION['ImageMaxSize']) ? $_SESSION['ImageMaxSize'] / 1000 : (!empty($ImageMaxSize) ? $ImageMaxSize / 1000 : '???'))));
echo "Ошибка загрузки файла <b>" . $arr['name'] . "</b>. Размер больше <b>" . $ImageMaxSize . "</b>Kb (" . ini_get('upload_max_filesize') . ")!";
} elseif (empty($arr['name']) && $arr['error'] == 4) {
// он просто не передан
} else echo "Ошибка(<b>" . $arr['error'] . "</b>) загрузки файла: <b>" . $arr['name'] . "</b>!";
} elseif (isset($arr['type']) && substr($arr['type'], 0, 6) == 'image/' && in_array($ext=GetExt($arr['name']), ['jpeg', 'jpg', 'gif', 'png'])) {
$nname = $_SERVER['DOCUMENT_ROOT'].'/data/image/news/'.date('Y');
if(!is_dir($nname))mkdir($nname,0666, !0);
$nname.='/'.url2file(mb_strtolower(basename($arr['name'])));
if (move_uploaded_file($arr['tmp_name'], $nname)) {
echo "Сохранил: " . htmlspecialchars('<img src="'.substr($nname,strlen($_SERVER['DOCUMENT_ROOT'])), ENT_QUOTES, charset,!1).'">'; //echo " - сохранил в " . $nname;
} else echo "Не смог сохранить " . $arr['tmp_name'] . " в " . $nname;
} elseif ($arr['tmp_name'] != '') {
echo "Неверный тип <b>" . $arr['type'] . "</b>, расширение: ".@$ext;
}
}
function url2file($str)
{
$str=preg_replace('/^https?:\/\/(www\.)?/i', '', $str);
//if(!($qp===false)) $str=substr($str, 0, $qp).str_replace ('/', "_", substr($str, $qp+1));
//$str=preg_replace('/[\?\&]reload(=[^&]*)?/', '', $str);
$str = rus2translit($str);
$str = strtolower($str);
$str = str_replace ('\'', "", $str);
$str = preg_replace('~[^a-z0-9\._]+~', '_', $str); // если все в юникоде, то preg_replace('~[^a-z0-9\._]+~u', '_', $str);
if (substr($str, -4, 4) == ".php") $str = substr($str, 0, -4);
$str = trim($str, "_"); $str=substr($str,0,128);
return $str;
}
function rus2translit($string)
{
$converter = ['а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya'];
return strtr($string, $converter);
}
function GetExt($file)
{
$qp = strpos($file, "?");
if ($qp !== false) $file = substr($file, 0, $qp);
$ext = strtolower(substr(strrchr(basename($file), '.'), 1));
return $ext;
}
?>
<h1>Загрузка картинок</h1>
<form enctype="multipart/form-data" method="POST" action="up.php" >
<input name="MAX_FILE_SIZE" type="hidden" value="<?=$ImageMaxSize?>000">
Изображение(<3Мb): <input type="file" name="img[]" multiple accept="image/*">
<input type="submit" value="Загрузить" />
</form>
.
Прокомментировать/Отблагодарить