[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файлов на сервер
art1cool
Здравствуйте!
Установил на сайт загрузчик, но не могу понять как сделать так чтобы каждому файлу присваивалось свое имя, дабы избежать одинаковых названий.
Использую это решение, просьба ткнуть носом на то как решить данную проблему.
Заранее спасибо!



Спустя 15 минут, 20 секунд (11.03.2010 - 15:24) Nikitian написал(а):
Цитата

Использую это решение, просьба ткнуть носом на то как решить данную проблему.

покажите как пытаетесь и как у вас уже сделано. Скажем что где поменять. Главным образом интересует скрипт, который принимает файл и сохраняет его.

Спустя 9 минут, 7 секунд (11.03.2010 - 15:33) art1cool написал(а):
Цитата (Nikitian @ 11.03.2010 - 12:24)
Цитата

Использую это решение, просьба ткнуть носом на то как решить данную проблему.

покажите как пытаетесь и как у вас уже сделано. Скажем что где поменять. Главным образом интересует скрипт, который принимает файл и сохраняет его.

$(document).ready(function() {

var button = $('#uploadButton'), interval;

$.ajax_upload(button, {
action : 'uploader.php',
name : 'myfile',
onSubmit : function(file, ext) {
// показываем картинку загрузки файла
$("img#load").attr("src", "load.gif");
$("#uploadButton font").text('Загрузка');

/*
* Выключаем кнопку на время загрузки файла
*/
this.disable();

},
onComplete : function(file, response) {
// убираем картинку загрузки файла
$("img#load").attr("src", "loadstop.gif");
$("#uploadButton font").text('Загрузить');

// снова включаем кнопку
this.enable();

// показываем что файл загружен
$("<li>http://files.remmobile.ru/files/" + file + "</li>").appendTo("#files");

}
});
});

uploader.php
<?php
$uploaddir = 'files/';
$uploadfile = $uploaddir.basename($_FILES['myfile']['name']);
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
?>

Спустя 39 минут, 32 секунды (11.03.2010 - 16:13) phz написал(а):
Добавь к примеру time():

    $uploaddir = 'files/';
$uploadfile = $uploaddir.time().basename($_FILES['myfile']['name']);

if (move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile) == FALSE)
{
echo 'Ошибка загрузки файла';
} else {
echo 'Удачно загружен!';
}


Или используй end(explode(".", $_FILES['myfile']['name'])); и т.д и т.д

Читай http://php.net/manual/en/function.move-uploaded-file.php

Спустя 1 минута, 36 секунд (11.03.2010 - 16:15) Nikitian написал(а):
uploader.php

<?php
$uploaddir = 'files/';
$uploadfile = basename($_FILES['myfile']['name']);
$postf='';
$i=0;
while(file_exists($uploaddir.$postf.$uploadfile))
{
$postf=$i;
$i++;
}
$uploadfile=$uploaddir.$postf.$uploadfile;
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
?>


Спустя 29 минут, 14 секунд (11.03.2010 - 16:44) art1cool написал(а):
Цитата (Nikitian @ 11.03.2010 - 13:15)
uploader.php

<?php
$uploaddir = 'files/';
$uploadfile = basename($_FILES['myfile']['name']);
$postf='';
$i=0;
while(file_exists($uploaddir.$postf.$uploadfile))
{
$postf=$i;
$i++;
}
$uploadfile=$uploaddir.$postf.$uploadfile;
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
?>


Спасибо, твой вариант работает, но вот после загрузки файла скрипт код которого приведен выше в конце своей работы генерирует ссылку на файл, а теперь если загружать один и тот же файл, на сервере они сохраняются с порядковым номером, а ссылка выводится без порядкового номера, как это побороть?

Спустя 11 минут, 53 секунды (11.03.2010 - 16:56) Nikitian написал(а):
Цитата

как это побороть

Очевидно, необходимо как-то возвращать сгенерённое имя.

Спустя 21 минута, 3 секунды (11.03.2010 - 17:17) art1cool написал(а):
Цитата (Nikitian @ 11.03.2010 - 13:56)
Цитата

как это побороть

Очевидно, необходимо как-то возвращать сгенерённое имя.

это понятно, но вот как? я в php еще пока не силен, но пытаюсь разобраться...

Спустя 1 час, 23 минуты, 13 секунд (11.03.2010 - 18:40) art1cool написал(а):
Ну кто нибудь, очень прошу помощи! Гуру отзовитесь!

Спустя 42 минуты, 36 секунд (11.03.2010 - 19:23) art1cool написал(а):
up

Спустя 2 минуты, 15 секунд (11.03.2010 - 19:25) Nikitian написал(а):
Делайте в конце echo$uploadfile;
А в скрипте

onComplete : function(file, response) {
// убираем картинку загрузки файла
$("img#load").attr("src", "loadstop.gif");
$("#uploadButton font").text('Загрузить');

// снова включаем кнопку
this.enable();

// показываем что файл загружен
$("<li>http://files.remmobile.ru/files/" + response + "</li>").appendTo("#files");

}

Вроде так.

Спустя 8 минут, 56 секунд (11.03.2010 - 19:34) art1cool написал(а):
Цитата (Nikitian @ 11.03.2010 - 16:25)
Делайте в конце echo$uploadfile;
А в скрипте

onComplete : function(file, response) {
      // убираем картинку загрузки файла
      $("img#load").attr("src", "loadstop.gif");
      $("#uploadButton font").text('Загрузить');

      // снова включаем кнопку
      this.enable();

      // показываем что файл загружен
      $("<li>http://files.remmobile.ru/files/" + response + "</li>").appendTo("#files");

      }

Вроде так.

не работает sad.gif
Сделал так:
<?php
$uploaddir = 'files/';
$uploadfile = basename($_FILES['myfile']['name']);
$postf='';
$i=0;
while(file_exists($uploaddir.$postf.$uploadfile))
{
$postf=$i;
$i++;
}
$uploadfile=$uploaddir.$postf.$uploadfile;
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
echo$uploadfile;
?>

после загрузки вот что:
Загрузить

1. Загруженные файлы : http://files.remmobile.ru/files/
Parse error: syntax error, unexpected T_ECHO in www/htdocs/uploader.php on line 13

Спустя 3 минуты, 47 секунд (11.03.2010 - 19:38) DedMorozzz написал(а):
в коде не разбирался, но тут "echo$uploadfile;" не помешает пробел. Им тесно...
Ах да, иперед ЕЧО поставь запятую. Так красивее.

Спустя 1 минута, 50 секунд (11.03.2010 - 19:39) art1cool написал(а):
Цитата (DedMorozzz @ 11.03.2010 - 16:38)
в коде не разбирался, но тут "echo$uploadfile;" не помешает пробел. Им тесно...
Ах да, иперед ЕЧО поставь запятую. Так красивее.

это я заметил и поправил, только после этого выложил ошибку выше...

Спустя 1 час, 4 минуты, 39 секунд (11.03.2010 - 20:44) Nikitian написал(а):
Пробел не обязательно. Парсеррор от того, что перед этим строчка не имеет завершающей точки с запятой.

P.S. Я вообще часто так слитно пишу. Echo использую редко, а вот ретурны - это постоянно слитно. :-[

Спустя 5 минут, 19 секунд (11.03.2010 - 20:49) DedMorozzz написал(а):
Цитата
иперед ЕЧО поставь запятую
тьфу ты, запятую...точку с запятой =) Nikitian, точно и без пробела норм читаеться...хотя эт логично.

Спустя 16 часов, 17 минут, 52 секунды (12.03.2010 - 13:07) art1cool написал(а):
Цитата (Nikitian @ 11.03.2010 - 17:44)
Пробел не обязательно. Парсеррор от того, что перед этим строчка не имеет завершающей точки с запятой.

P.S. Я вообще часто так слитно пишу. Echo использую редко, а вот ретурны - это постоянно слитно. :-[

Блин, извиняюсь, я сам протупил, точку с запятой и пробел поставил, а не работало потому что я файл uploader.php на своем компе сохранил, а на хостинг не закинул, после того как закинул все заработало!
Всем спасибо за помощь, особенно Nikitian!

Спустя 3 часа, 4 минуты, 3 секунды (12.03.2010 - 16:11) NoCash написал(а):
всем сдрасте собственно гворя мне нужно сдеалть тоже самое только у меня немножко все по другому
загрузка на сервер
if($_FILES['file_userfile']){ 
require_once(HEADERF);
require_once(e_HANDLER."upload_handler.php");
$uploaded = file_upload("/images/nb_pictures");
$pic = $uploaded[0]['name'];
$file = $uploaded[0]['name'];
}
else
{
$pic = "no images";



а вот сдеть вот поидее должно присваиваться уникальноеимя
if (strpos($fileinfo,"attachment" + time().date("d-m-Y")) === 0) 
{ // For attachments, add in a prefix plus time and date to give a unique file name
$addbit = explode('+',$fileinfo,2);
$name = time().date("d-m-Y")."_".USERID."_".trim($addbit[1]).$name;
}
elseif (strpos($fileinfo,"prefix " ) === 0)
{ // For attachments, avatars, photos etc alternatively just add a prefix we've been passed
$addbit = explode('+',$fileinfo,2);
$name = trim($addbit[1]).$name;
}

$destination_file = $uploaddir."/".$name;

if ($fileinfo == "unique" && file_exists($destination_file))
{ // Modify destination name to make it unique - but only if target file name exists
$name = time()."_".$name;
$destination_file = $uploaddir."/".$name;
}


if (file_exists($destination_file) && !$overwrite) $first_error = 250; // Invent our own error number - duplicate file
}

но к сожалению ничево не получается
подскажите
Быстрый ответ:

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