upload для opera mini

                        
<?php 
/*
*upload для opera mini
*

оригинальный код и комментарии сохранены
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="no-cache">
<title>Форма отправки файла для Opera Mini</title>
</head>

<body>

<!-- v1.1/13.10.2006-->
<?php

// путь для загруженных файлов, по аналогии с настоящей загрузкой по http
//$uploaddir = '\\home\\opera-mini.ru\\www\\test\\fileup\\';
$uploaddir = 'fileup/';
/*
//НИЖЕ ИДЁТ ЗАМЕНА ВОТ ТАКОГО БЛОКА ЗАГРУЗКИ
if (move_uploaded_file($_FILES['filel']['tmp_name'], $uploaddir . $_FILES['filel']['name'])) {
echo "File is valid, and was successfully uploaded<br>";
} else {
echo "There some errors!<br>";
}

*/
/*
прикрепление файла происходит в виде отсылки имени файла и его тела, кодированного в Base64.
в post для данного примера это выглядит как:

?file1=filename.extfile=/9...данные....Q
[POST: [имя файла ][сигн][данные файла ]]
как видно, здесь нет явного определения параметра file, поэтому этот параметр вырезается из всего POST.
всё, что до него - то имя, что после - данные.

*/
// определяем реальное имя файла
$uploadedfile = $_POST['file1'];

// проверка на наличие данных в POST
if (strlen($uploadedfile)) {
// "вырезаем" данные файла из пришедшего
// параметр 'file=' НЕ МЕНЯТЬ!!!! иначе не получите данных файла
$array = explode('file=', $uploadedfile);
$tmp_name = $array[0];
$filebase64 = $array[1];
}

// проверка на нулевой размер файла
if (strlen($filebase64)) {
// определяем имя файла для создания
// ЗДЕСЬ МОЖНО ИЗМЕНИТЬ ДЛЯ ИСКЛЮЧЕНИЯ СОВПАДЕНИЙ C СУЩЕСТВУЮЩИМИ
$name = $tmp_name;
$FileName = $uploaddir.$name;

// декодируем данные файла
$filedata = base64_decode($filebase64);


// создание и запись данных в файл
$file = @fopen($FileName, "wb");

if($file){
if(flock($file, LOCK_EX)){
fwrite($file, $filedata);
flock($file, LOCK_UN);
}
fclose($file);
}

// отчёт о результате
echo '<script language="Javascript">';
if (file_exists($FileName) && filesize($FileName) == strlen($filedata)) {
echo 'alert ("File ',$tmp_name,' is valid, and was successfully uploaded")';
} else {
echo 'alert ("An error occured while upload ',$tmp_name,'")';
}
echo '</script>';



// просто список файлов в директории загрузки
echo '..';

foreach (glob($uploaddir.'*.*') as $filename) {
$name = explode('/', $filename);
//$name = explode('.', $name[1]);
$lastmodif = filemtime($filename);
$size = filesize($filename);
$time = date("G:i j-M-Y", $lastmodif);

echo "<br><a href=\"$filename\">$name[1] [$size] [$time]</a><br>";
}


echo '<p><a href="upload.php">upload</a></p>';

} else {
// расположение формы на странице не критично.
// единственное, что ссылка на обзор файла ДОЛЖНА БЫТЬ расположена
// непосредственно под полем отображения имени файла "file1"
echo '<form method="post" enctype="multipart/form-data">';
echo 'Файл для отправки';
////////////////////////////////////////////////////////////////////////////////
/// ФИКСИРОВАННАЯ ЧАСТЬ: НЕ ИЗМЕНЯТЬ!!!
// имя менять при одновременной смене его и в обрабочике POST
echo '<br><p> <input name="file1" value = "">&nbsp;';
// url ссылки ДОЛЖЕН БЫТЬ именно таким, для определения Оперой
// это "op:fileselect" НЕ МЕНЯТЬ!!! иначе Opera перестанет открывать ФМ для обзора
echo '<a href="op:fileselect">Выбрать файл</a>';
////////////////////////////////////////////////////////////////////////////////
echo '<br><p> <input type="submit" value="Послать файл">';
echo '</form>';
}


?>

</body>
</html>
3 9 0
Без комментариев...