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