Просмотр полной версии : Скрипт массовой загрузки файлов на сервер.
Ситуация такая, что иногда приходится загружать на ломанные сервера большое кол-во файлов (когда по разным причинам нельзя работать с архивами). Собственно интересует сабж, нет ли у кого на примете чего-то такого удобного одним файлом?
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[] и пользователь сам выберет все нужные файлы
http://www.softtime.ru/scripts/upload.php
P.S ответ никак потому что input type='file' и поэтому придётся каждый файл отправлять по отдельности выбирая из списка.
Только если сделать много инпут file с именами files[] и пользователь сам выберет все нужные файлы
Я имел ввиду скрипт, где средствами JS или AJAX реализована передача имен файлов.
вобщем нашел один вариант: http://www.uploadify.com/download/
Урезается до шести необходимых файлов, обеспечивающих мультизагрузку. Но всё равно многовато :(
Светлый приведите реальный пример, когда действительно нельзя использовать архивы
Светлый приведите реальный пример, когда действительно нельзя использовать архивы
Ну например нет доступа к командной строке и когда в php нет поддержки zlib я не в курсе как можно распаковать архив.
Светлый например, http://www.phpclasses.org/browse/package/4239.html Реализация распаковки нескольких видов архивов, включая tar, вроде сделанный на чистом пхп
http://demo.swfupload.org/v220/index.htm
Вот что вам нужно 100%!
Просто реализуется через flash - ajax. Сам постоянно использую. Не надо никаких архивов, просто выбираешь нужные файлы в любом количестве.
ЗЫ: к сожалению одним файликом тут никак не обойтись.
если только вытащить код флешки и запихнуть его в base_64 в тот-же файл.
<?
$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()
}
}
?>
а что мешает сделать несколько input-ов типа file с разными именами а потом их просто обрабатывать на стороне сервера???
fokinkostya
03.03.2010, 09:35
Я реализовывал подобную фишку на местном файлообменнике. За базу для мультиаплоада брался скрипт на JQ, называется UberUpload. Частично переписан, добавлены всякие украшательства. В принципе реализовать самый простой вариант не так сложно.
На стороне клиента будет трудится простенький скрипт JS, привязанный на кнопочку "добавить файл". На стороне сервера простенькая обработка на PHP. Если интересует, могу попозже накидать пример.
fokinkostya, только на javascript? Без флеша? интересует!
Я имел ввиду скрипт, где средствами 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
b3, это не прикольно. с флеш аплодером можно добиться эффекта, когда пользователь выбирает сразу несколько файлов. вот это действительно удобно.
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 минут.
Могу сделать под заказ.
а это чем не подходит?
http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx
И всю эту шоблу каждый раз по одному файлу лить? :)
fokinkostya, суть в том, что кол-во файлов обычно 1000+, имена генерятся рандомно. Поэтому к сожалению тоже не вариант(
fokinkostya
04.03.2010, 05:20
Ну дык ты задачу опиши, может чего и придет в голову.
В идеале - заливаем небольшой файлик на сервер, открываем его через веб, выбираем скопом всё что надо залить, льём. В принципе не так уж принципиально будет файл один или 2-3-4, или большого размера. Главное чтобы стабильно заливал, не вываливался по таймауту и пр.
Судя по всему разгадка в симбиозе php и flash
fokinkostya
04.03.2010, 08:27
Судя по всему разгадка в симбиозе php и flash
Скорее всего.
Потому что я не слышал о возможности выбора нескольких файлов стандартными средствами.
Вы че тупите я еще страницу назад выложил ссылку
http://ajaxuploader.com/Demo/select-multiple-files-upload.aspx
обьясняю если вы вообще далекие. Выделяеш ссылку, вставляеш в новом окне браузера, загружается страничка, жмеш Upload Multiple Files (max 10mb) в открышемся окне можно выбирать файлы, либо нажать CTRL+A чтоб выделить все файлы.
Светлый
И всю эту шоблу каждый раз по одному файлу лить?
Купи себе глаза, это массовый аплоадер. Ну если ты вася можеш конечно по одному файлу лить.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot