PDA

Просмотр полной версии : Скрипт массовой загрузки файлов на сервер.


Светлый
20.02.2010, 01:07
Ситуация такая, что иногда приходится загружать на ломанные сервера большое кол-во файлов (когда по разным причинам нельзя работать с архивами). Собственно интересует сабж, нет ли у кого на примете чего-то такого удобного одним файлом?

shell_c0de
20.02.2010, 01:56
прочитай тут http://www.softtime.ru/scripts/upload.php
а тут http://paradigm.ru/2007/11/mass-upload с использованием flash
P.S ответ: никак потому что input type='file' и поэтому придётся каждый файл отправлять по отдельности выбирая из списка.
Только если сделать много инпут file с именами files[] и пользователь сам выберет все нужные файлы

Светлый
20.02.2010, 01:59
http://www.softtime.ru/scripts/upload.php
P.S ответ никак потому что input type='file' и поэтому придётся каждый файл отправлять по отдельности выбирая из списка.
Только если сделать много инпут file с именами files[] и пользователь сам выберет все нужные файлы


Я имел ввиду скрипт, где средствами JS или AJAX реализована передача имен файлов.

Светлый
20.02.2010, 03:29
вобщем нашел один вариант: http://www.uploadify.com/download/

Урезается до шести необходимых файлов, обеспечивающих мультизагрузку. Но всё равно многовато :(

Gifts
20.02.2010, 15:06
Светлый приведите реальный пример, когда действительно нельзя использовать архивы

Светлый
25.02.2010, 23:17
Светлый приведите реальный пример, когда действительно нельзя использовать архивы


Ну например нет доступа к командной строке и когда в php нет поддержки zlib я не в курсе как можно распаковать архив.

Gifts
25.02.2010, 23:48
Светлый например, http://www.phpclasses.org/browse/package/4239.html Реализация распаковки нескольких видов архивов, включая tar, вроде сделанный на чистом пхп

Byte_
26.02.2010, 13:14
http://demo.swfupload.org/v220/index.htm
Вот что вам нужно 100%!
Просто реализуется через flash - ajax. Сам постоянно использую. Не надо никаких архивов, просто выбираешь нужные файлы в любом количестве.

ЗЫ: к сожалению одним файликом тут никак не обойтись.
если только вытащить код флешки и запихнуть его в base_64 в тот-же файл.

[ac1D]
28.02.2010, 02:28
<?
$file = array(1 => "st.tar", 2 => "man.tar", 3 => "sd.tar");
for ($i=1;$i<=3;$i++) {
system("wget google.com/tools/".file[$i]);
if (file_exists($file[$i])) {
$dir = str_replace(basename(__file__),"",__file);
echo "$file[$i] is downloaded to $dir";
flush()
}
}
?>

dr.Web
03.03.2010, 00:04
а что мешает сделать несколько input-ов типа file с разными именами а потом их просто обрабатывать на стороне сервера???

fokinkostya
03.03.2010, 09:35
Я реализовывал подобную фишку на местном файлообменнике. За базу для мультиаплоада брался скрипт на JQ, называется UberUpload. Частично переписан, добавлены всякие украшательства. В принципе реализовать самый простой вариант не так сложно.

На стороне клиента будет трудится простенький скрипт JS, привязанный на кнопочку "добавить файл". На стороне сервера простенькая обработка на PHP. Если интересует, могу попозже накидать пример.

Byte_
03.03.2010, 10:23
fokinkostya, только на javascript? Без флеша? интересует!

b3
03.03.2010, 10:32
Я имел ввиду скрипт, где средствами JS или AJAX реализована передача имен файлов.

http://valums.com/ajax-upload/
http://valums.com/wp-content/uploads/ajax-upload/demo-jquery.htm

http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx

Byte_
03.03.2010, 11:09
b3, это не прикольно. с флеш аплодером можно добиться эффекта, когда пользователь выбирает сразу несколько файлов. вот это действительно удобно.

b3
03.03.2010, 13:20
Byte_
а это чем не подходит?
http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx

fokinkostya
03.03.2010, 19:51
<?php
if(is_array($_FILES)){
$f_sel = 0;
while (list ($key, $value) = each ($_FILES)){
if (gettype($value) == 'array'){
while (list ($key_2, $value_2) = each ($value)){
$files[$f_sel][$key_2] = $value_2;
}
}
$f_sel++;
}
@reset($_FILES);
}
if (count($files) == 1){
if ($files[0]['error'] == 0){ // Проверяем размер
echo $files[0]['tmp_name'].'<br />';
}
}
// Если файлов несколько
elseif (count($files) > 1){
$count = count($files);
// Обрабатываем файлы циклом
for ($sel = 0; $sel < $count; $sel++){ // Если файл залился без ошибок, обрабатываем
if ($files[$sel]['error'] == 0){
echo $files[$sel]['tmp_name'].'<br />';
}
}
}


?>

<html>
<head>
<title>Мульти загрузка</title>
</head>
<style type="text/css">

</style>
<script type="text/javascript">
function addFile() {
var d = new Date();
var span = newEl('span');
span.id = d.getTime();
span.style.display = 'block';
var input = newEl('input');
input.type = 'file';
input.name = 'file'+d.getTime();
span.appendChild(input);
var div = getEl('multiUpload');
div.appendChild(span);
}

function newEl (type) {
return document.createElement(type);
}

function getEl (id) {
return document.getElementById(id);
}
</script>

<body>
<input type="button" value="Add file" onClick="addFile();">
<form action="upload.php" method="post" enctype="multipart/form-data">
<div id="multiUpload" style="display: block;">
</div>
<div>
<input type="submit" value="Send">
</div>
</form>
<script type="text/javascript">addFile();</script>
</body>
</html>


Как то так... Накалякал за 10 минут.

Могу сделать под заказ.

Светлый
04.03.2010, 01:23
а это чем не подходит?
http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx

И всю эту шоблу каждый раз по одному файлу лить? :)

fokinkostya, суть в том, что кол-во файлов обычно 1000+, имена генерятся рандомно. Поэтому к сожалению тоже не вариант(

fokinkostya
04.03.2010, 05:20
Ну дык ты задачу опиши, может чего и придет в голову.

Светлый
04.03.2010, 06:34
В идеале - заливаем небольшой файлик на сервер, открываем его через веб, выбираем скопом всё что надо залить, льём. В принципе не так уж принципиально будет файл один или 2-3-4, или большого размера. Главное чтобы стабильно заливал, не вываливался по таймауту и пр.
Судя по всему разгадка в симбиозе php и flash

fokinkostya
04.03.2010, 08:27
Судя по всему разгадка в симбиозе php и flash
Скорее всего.
Потому что я не слышал о возможности выбора нескольких файлов стандартными средствами.

b3
04.03.2010, 12:14
Вы че тупите я еще страницу назад выложил ссылку
http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx
обьясняю если вы вообще далекие. Выделяеш ссылку, вставляеш в новом окне браузера, загружается страничка, жмеш Upload Multiple Files (max 10mb) в открышемся окне можно выбирать файлы, либо нажать CTRL+A чтоб выделить все файлы.

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