Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Скрипт массовой загрузки файлов на сервер. (https://forum.antichat.xyz/showthread.php?t=180302)

Светлый 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

Цитата:

Сообщение от shell_c0de
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

Цитата:

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


Ну например нет доступа к командной строке и когда в 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

PHP код:

<?
$file 
= array(=> "st.tar"=> "man.tar"=> "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 код:

<?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

Цитата:

Сообщение от b3
а это чем не подходит?
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 чтоб выделить все файлы.

Светлый
Цитата:

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


Время: 19:38