Хорошо, это сложный вопрос, я часами искал решение / проблему. Я использую SWFUpload для загрузки изображений без перезагрузки страницы (также с причудливой полосой выполнения), это отлично работает, когда я нахожусь на localhost (сервер Wamp), но сходит с ума, когда я пытаюсь сделать это на моем реальном сервере Linux ( что является единственным возможным флагом, насколько я мог видеть), он запускает Apache2 и PHP5. Как я уже сказал, интерфейс в порядке (не считая того факта, что это вспышка). Внутренний код выглядит следующим образом:
SWFUpload_settings.js
var swfu_settings ={upload_url : "upload.php",
flash_url : "flash/swfupload.swf",
button_placeholder_id : "upload_flash",
file_size_limit : "2 MB",
file_types : "*.gif;*.jpg;*.png",
file_post_name : "Filedata",
file_queue_limit : 1,
post_params : {
"PHPSESSID" : getCookie()
},
upload_start_handler : upload_start,
upload_error_handler : upload_error,
upload_complete_handler : upload_complete,
upload_progress_handler : upload_progress,
file_queued_handler : file_queued,
button_disabled : false,
button_width : 120,
button_height : 22,
button_text : '<div class="adm_upload">Select image</div>',
button_text_style : '.adm_upload{color:#ff0000;}'
};
upload.php
function manageUpload(){
if( isset($_FILES['Filedata']) ){
$dest_dir = $_SERVER[DOCUMENT_ROOT]."/images/products";
$destination = $_SERVER[DOCUMENT_ROOT]."/images/products/" . $_FILES['Filedata']['name'];
if( is_dir($dest_dir) ){
if( is_writable($dest_dir) ){
if( !move_uploaded_file($_FILES['Filedata']['tmp_name'], $destination ) ){
$html_body = '<h1>File upload error!</h1>';
switch ($_FILES['Filedata']['error']) {
case 1:
$html_body .= 'The file is bigger than this PHP installation allows';
break;
case 2:
$html_body .= 'The file is bigger than this form allows';
break;
case 3:
$html_body .= 'Only part of the file was uploaded';
break;
case 4:
$html_body .= 'No file was uploaded';
break;
default:
$html_body .= 'unknown errror';
}
echo ($html_body);
}
}
else{
echo "Says it's not writable: ".$dest_dir;
}
}
else{//not a directory?
echo "Says it's not a directory:".$dest_dir;
}
}
else{
echo "No file POSTED.\n";
}
}
Единственная ошибка, которую я получаю, - это $ _FILES ['Filedata'] ['error'] = 3, 'Только часть файла была загружена'. Каталог назначения имеет разрешение 777, и вы можете видеть, что я выполнил необходимые проверки. Это просто не сработает, понятия не имею почему. Кроме того, в файлах, которые я пытался загрузить, не было пробелов в имени файла, поэтому это не должно подходить под проблему 206 с SWFUpload.
Насколько я могу судить, это может быть связано либо с внешней SWFUpload, либо с конфигурацией внутреннего сервера. Пожалуйста помоги.
P.S. Нет необходимости упоминать о безопасности, это разрешено использовать только администратору сервера с внешним доступом, плюс есть ограничение внешнего интерфейса на файлы, которые он может выбирать (изображения). Дальше закреплять не было смысла.
3
возникает, когда загрузка была каким-то образом прервана. - person Mob   schedule 04.11.2011