[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: простой личный кабинет
systempapa
помогите пжалуста, бьюсь где то недели 2 уже, не могу найти оптимальное решение.
суть такая: юзер авторизируется (с этим проблем нет) далее попадает на свою страничку в которой отображаются файлы, присвоенные только ему при закачке :huh:

сама загрузка такая: админ, логинится собой, попадает в миниадминку,где есть загрузка файлов+выбор кому эти файлы, и при загрузке энных они 1) загружаются на сервер 2) прописываются в базу (путь относительно сайта, т.е 'path'\'filename')

проблема возникла при мультизагрузке,т.к файлом может быть от 1 до 100, и каждый раз по файлу присваивать 100 файлов ОДНОМУ юзеру, а если их 700юзеров? геморно.... при создании простой формы проблем нет- 1 файл+юзер, все нормально работает, но проблема имеено при реализации мультизагрузки через небольшой ява скриптик; загрузка работает корректно, файлы летят на сервер и присваиваются данному юзеру, проблема в том что он не пишет путь в БД , чтобы юзер мог их скачать через личку....вроде суть описал, щас будет код:

форма (инекс.пхп):

<html>
<head>
<title>
Ajax File Uploader</title>
<meta
http-equiv="content-type" content="text/html; charset=utf-8" />
<script
type="text/javascript" src="js/jquery-1.3.1.min.js"></script>
<script
type="text/javascript" src="js/jquery.MultiFile.js"></script>
<script
type="text/javascript" src="js/jquery.form.js"></script>
<script
type="text/javascript" src="js/jquery.blockUI.js"></script>
<link
href="css/style.css" rel="stylesheet" type="text/css">
<script
type="text/javascript">
$(document).ready(function(){

$('.MultiFile').MultiFile({
accept:'jpg|gif|bmp|png|rar', max:50, STRING: {
remove:'удалить',
file:'$file',
selected:'Выбраны: $file',
denied:'Неверный тип файла: $ext!',
duplicate:'Этот файл уже выбран:\n$file!'
}
}
);

$("#loading").ajaxStart(function(){
$(this).show();
})
.
ajaxComplete(function(){
$(this).hide();
});


$('#uploadForm').ajaxForm({
beforeSubmit: function(a,f,o) {
o.dataType = "html";
$('#uploadOutput').html('Submitting...');
},
success: function(data) {
var $out = $('#uploadOutput');
$out.html('Form success handler received: <strong>' + typeof data + '</strong>');
if (typeof data == 'object' && data.nodeType)
data = elementToString(data.documentElement, true);
else if (typeof data == 'object')
data = objToString(data);
$out.append('<div><pre>'+ data +'</pre></div>');
}
}
);
});
</script>
</head>

<body>
<form
id="uploadForm" action="doajaxfileupload.php" method="post" enctype="multipart/form-data">
<input
name="MAX_FILE_SIZE" value="100000" type="hidden"/>
File: <input name="fileToUpload[]" id="fileToUpload" class="MultiFile" type="file"/>
Кому:<input type="text" name="whom"/>
<input
value="Submit" type="submit"/>
</form>
<img
id="loading" src="loading.gif" style="display:none;"/>
<div
id="uploadOutput"></div>
</body>
</html>



сам обработчик doajaxfileupload.php:


<?php
$error = "";
$msg = "";
$fileElementName = 'fileToUpload';
$i = 0;
$files_count = sizeof($_FILES[$fileElementName]["name"]);

//пути, первый абсолютный,2 относительный
$path="/home/virtwww/w_telemetria72-ru_66081374/http/ajax/upload/";
$path2="/ajax/upload/";

//начало ошибки
//Warning: copy(Array) [function.copy]: failed to open stream: No such file or directory in Z:\home\test1.ru\www\ajax\doajaxfileupload.php on line 13


if(copy($_FILES['fileToUpload']["tmp_name"],
13. $path.$_FILES['fileToUpload']["name"]))
//конец ошибки...


$fn=$_FILES['"fileToUpload"']["name"];
$whom=$_POST['whom'];
$wh=$path2.$fn;
$date = date('Y-m-d');
@ $db = mysql_connect("","","");
if (!$db)
{
echo "Error: Could not connect to database. Please try again later . " ;
exit;
}
mysql_select_db( "gb_x_telemb17");
$qs=mysql_query("INSERT INTO `gb_x_telemb17`.`reports` (`id`,`name`,`owners`,`date`,`dir`) VALUES (null,'".$fn."','".$whom."','".$date."','".$wh."');");
echo ($qs);
//
//end

for ($i = 0; $i < $files_count-1; $i++) {
if(!empty($_FILES[$fileElementName]['error'][$i]))
{
switch($_FILES[$fileElementName]['error'][$i])
{

case '1':
$error = 'размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini ';
break;
case '2':
$error = 'размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. ';
break;
case '3':
$error = 'загружена только часть файла ';
break;
case '4':
$error = 'файл не был загружен (Пользователь в форме указал неверный путь к файлу). ';
break;
case '6':
$error = 'неверная временная дирректория';
break;
case '7':
$error = 'ошибка записи файла на диск';
break;
case '8':
$error = 'загрузка файла прервана';
break;
case '999':
default:
$error = 'No error code avaiable';
}
}
elseif(empty($_FILES[$fileElementName]['tmp_name'][$i]) || $_FILES[$fileElementName]['tmp_name'][$i] == 'none')
{
$error = 'No file was uploaded..';
}else
{
if (file_exists("upload/" . $_FILES[$fileElementName]['name'][$i])){
$error =$_FILES[$fileElementName]['name'][$i] . " уже существует. ";
}
else{
$msg .= " File Name: " . $_FILES[$fileElementName]['name'][$i] . "<br/>";
//$msg .= " File Temp Name: " . $_FILES['fileToUpload']['tmp_name'] . "<br/>";
$msg .= " File Type: " . $_FILES[$fileElementName]['type'][$i] . "<br/>";
$msg .= " File Size: " . (@filesize($_FILES[$fileElementName]['tmp_name'][$i])/ 1024)."Kb";
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "upload/" . $_FILES[$fileElementName]['name'][$i]);
}
//for security reason, we force to remove all uploaded file
@unlink($_FILES[$fileElementName][$i]);
}
echo "{";
echo "error: '" . $error . "',\n";
echo "msg: '" . $msg . "'\n";
echo "}";
}
?>



вроде все работает, но что за ошибка то такая? путь указан верно, может что то в массиве не так хранится?

должно поулчится так на выходе: выбрали N- файлов, указали ID кому эти файлы, нажали сабмит, 1) файлы летят на сервак 2) в БД указывается путь+имя сайты относительно сайта 3) в Бд указывайтся айди юзера
далее юзер с айди логинится и видит те файлы что указаны были для него...

помогите что работало :(



Спустя 10 минут, 27 секунд (14.03.2011 - 09:19) sharki написал(а):
У тебя лишняя ;
И лучше отделять код от запроса. Чет я не нашел переменную $wh


$patch = 'path/filename/';
$sql = "INSERT INTO `gb_x_telemb17`.`reports` (`id`,`name`,`owners`,`date`,`dir`) VALUES (null,'".$fn."','".$whom."','".$date."','".$patch.$_FILES['"fileToUpload"']["name"]."')";
$qs=mysql_query($sql);

Спустя 5 минут, 10 секунд (14.03.2011 - 09:24) sharki написал(а):
Ну если ниче не работает, надо проверять по отдельности, обработчик выполняется ровно столько раз, сколько файлов отправлено, попробуй вручную добавить файл через стандартную форму и добавить в БД, и потом уже переноси на этот скрипт

Спустя 7 минут, 37 секунд (14.03.2011 - 09:31) systempapa написал(а):
$fn=$_FILES['"fileToUpload"']["name"];
$whom=$_POST['whom'];
$wh=$path2.$fn;

тут вот она задается....может подскажете как то по другому можно это реализовать?

Спустя 8 минут, 53 секунды (14.03.2011 - 09:40) sharki написал(а):
Ну я и говорю, проверь, правильно ли у тебя вообще отрабатывает скрипт, запусти его отдельно, с простой формы, без мультизагрузки, проверь запрос напрямую в PHPMyAdmin(вручную пропиши значения)

Спустя 1 минута, 47 секунд (14.03.2011 - 09:42) systempapa написал(а):
окей,ща попробую по запросам, с простой формой все работает, без аякса

Спустя 44 минуты, 1 секунда (14.03.2011 - 10:26) systempapa написал(а):
мля :) что то с массивом....


$fileElementName = 'fileToUpload';
$i = 0;
$files_count = sizeof($_FILES[$fileElementName]["name"]);
$path="/test1.ru/www/ajax/upload/";
$path2="/ajax/upload/";

if(copy($_FILES[$fileElementName]['tmp_name'][$i],
$path.$_FILES[$fileElementName]['name'][$i]))

$fn=$_FILES[$fileElementName]['name'][$i];
$whom=$_POST['whom'];
$wh=$path2.$fn;

где я ошибся в этом куске кода?помогите :(

Спустя 5 часов, 42 минуты, 46 секунд (14.03.2011 - 16:09) Guest написал(а):
фигурную скобку после ИФ забыл
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.