Hromadný upload súborov... ? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hromadný upload súborov... ? – PHP – Fórum – Programujte.comHromadný upload súborov... ? – PHP – Fórum – Programujte.com

 

Tocimanko0
Grafoman
24. 10. 2007   #1
-
0
-

Ahoj!
Potreboval by som pomoc! Potrebujem zostrojit hromadny upload suborov. Premyslal som, ze by mohlo existovat pole, napr. subory[] , kde by boli vsetky subory na upload... Dalej pomocou foreach by sa postupne po jednom uploadovali. Ale: v HTML neexistuje ziadny prvok, ktory by vedel takto viacero suborov uploadovat :( Totizto robim administraciu galerie, kde by sa dali fotky jednoducho uploadovat naraz (nie po jednom odklikavat fotku za fotkou) a potom by sa vytvorila zlozka povedzme ./galeria/(nahodny retazec) kam by sa skopirovali do zlozky FOTO/ vsetky fotky a do ./galeria/(nahodny retazec) by este siel univerzalny vopred pripraveny index.php (kde by bolo vyobrazenie fotiek a pod) Moze mi niekto pomoct s tym uploadom? Diky moooc krat za akukolvek pomoc!

Nahlásit jako SPAM
IP: 195.91.54.–
mORb0
Stálý člen
24. 10. 2007   #2
-
0
-

To Tocimanko : Ja si prave takisto robim galeriu a tiez ma nebavi po jednom uploadovat fotky. Teraz to robim tak ze fotky jednoducho zabalim do zipu, uploadujem, po spusteni skriptu sa mi subor rozbali a jednotlive fotky sa mi ulozia do databazy, zmensia sa (aby neboli zase az tak velke) a potom sa este vytvori zmensena kopia (thumbnail) a je to. Problem moze byt jedine pri odosielani na server velky balik povodne velkych obrazokv pri pomalom pripojeni. Ale to sa da vyriesit napr. hromadnym zmensenim napr. cez advanced batch converter alebo rozdelenim skriptu (zmensenie na localhoste -> zabalenie ->odoslanie na server -> rozbalenie ->ulozenie do db)

<?php

$zipfile = "./tmp/test.zip";
$path = "./tmp/test/";

//Rozbalovanie suboru ZIP
$zip = new ZipArchive;
$res=$zip->open($zipfile);
if ($res === TRUE){
$zip->extractTo($path);
$zip->close();
}
//Funkcia na zmensenie obrazka
function createThumb($newwidth, $thumbtype){
global $path, $file, $src;

list($width,$height)=getimagesize($path.$file);

$newheight=($height/$width)*$newwidth;

if($thumbtype == 1){
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "./tmp/images/".$file;
}

elseif($thumbtype == 0){
$size_x = 112;
$size_y = 80;
$tmp=imagecreatetruecolor($size_x,$size_y);
imagecopyresampled($tmp,$src,-30,-15,0,0,$newwidth,$newheight,$width,$height);
$filename = "./tmp/images/thumbs/".$file;
}

imagejpeg($tmp,$filename,100);
imagedestroy($tmp);
}

if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file !="Thumbs.db") {
$src = imagecreatefromjpeg($path.$file);

createThumb(220,0);
createThumb(480,1);

imagedestroy($src);
echo "$file\n";
}
}
closedir($handle);
}

?>

Kod este nie je uplne dopracovany, ale zatial robi to co ma (rozbaluje, zmensuje)..

Nahlásit jako SPAM
IP: 91.127.38.–
www.milankohut.com
Tocimanko0
Grafoman
24. 10. 2007   #3
-
0
-

Hmm, diky :) Zda sa mi to ale zlozite.. Doplnim par faktov.. Uploadovat potrebujem obrazky typu JPG, rozhodne mensie nez 2 MB (povedzme ze priemerne 80KB). Ale ked nad tym tak uvazujem, zabalit do zipu. Hmm a ked ten ZIP archiv uz presahuje 2 MB (neviem kolko max. mozem odoslat ja. som na ic.cz, povedzte ak mate skusenosti :) nebude to robit problemy? A este jedna vec: Podporuje ic.cz funkcie na pracu s ZIP archivmi? Dakujem moc za pomoc :)

EDIT: Aha co som nasiel v jednom fore. Hmmm, zaujimave riesenie... ==>

Petr Pecha napsal:


> Hlavni problem, jak vybrat najednou vice souboru (hromadny vyber) pro
> upload na server, pripadne ktera technologie to umozni.
jak snadné technologie budou JavaScript u clienta a PHP na serveru
* client - prompt() se zeptá na počet souborů, potom for() vygeneruje
formulář, uživatel vybere soubory a odešle je na server
* server - ve smyčce čteme a kopírujeme zaslané soubory

podrobnosti viz. konec emailu

> Bohuzel jina moznost nez pres html formular a metodu POST u klienta a php
> skript na serveru me nenapada (neovladam ani ACTIVEX ani JAVU a ve FLASHI
> ?! ze by slo vyuzit ActionScript ?!).
ano Flash umí pokud se nepletu umí formuláře, viděl jsem chat ve Flashi a
posílat soubory by uměl myslím také.

> (Je tu omezeni v php max_file_upload_size byva nastaveno na 2-10 MB.)
ano to může být problém

> Takze upravit tyto 2 soubory pro upload vice (5-10) obrazku, ktere se musi
> ovsem vybrat jednotlive.
> (Obrazky se v pripade potreby upravi pro web po uploadu na server pomoci
> php.)
> Nahledy se vygeneruji pomoci php bud pri uploadu, prvni navsteve nebo se
> budou generovat pri kazde nasvsteve.

Stefan

PS: je to velmi hrubá verze nicméně funkční
POZOR na nastavení MAX_FILE_SIZE větší soubory opravdu neprojdou :O)))
podotýkám že script musí mít právo zápisu do $targetPath

<!-- upload.htm -->
<html>
<form action="upload.php" method="post" enctype="multipart/form-data">
<script>
pocet = prompt("tak kolik dneska ??");
for( i = 0; i < pocet; i++ ) {
document.write('<input type="hidden" name="MAX_FILE_SIZE" value="1024">');
document.write('<input type="file" name="userfile' + i + '"><br>');
}
</script>
<input type="submit"><br>
</form>
</html>
<!-- upload.php -->
<html>
<?php
$targetPath = "./";
for( $i = 0; is_uploaded_file($_FILES["userfile$i"]["tmp_name"]); $i++ ) {
if( copy($_FILES["userfile$i"]["tmp_name"],
$targetPath.$_FILES["userfile$i"]["name"]) ) {
print("<b>Soubor {$_FILES["userfile$i"]["name"]} byl
zkopírován</b><br>");
} else {
print("<b>Chyba při kopírování souboru
{$_FILES["userfile$i"]["name"]}</b><br>");
}
}
?>
</html>

Nahlásit jako SPAM
IP: 195.91.54.–
Tocimanko0
Grafoman
24. 10. 2007   #4
-
0
-

Mozem sa spytat este, ako sa teda pracuje s ZIP archivmi? Na lokale som skusal tvoj kod, mORB, ale asi nemam funkcie ZipArchive ani nemozem nic podobneho deklarovat :( Proste pre Apache neexistuje nic take ako ZipArchive :( !!! Pls, help!

Nahlásit jako SPAM
IP: 195.91.54.–
Tocimanko0
Grafoman
24. 10. 2007   #5
-
0
-

Pomoze mi sakra niekto????? :'(

Nahlásit jako SPAM
IP: 195.91.54.–
insider0
Věrný člen
24. 10. 2007   #6
-
0
-

se zipem ti ted neporadim, ale melo by to jit uploadovat nejak takto:

<input type="file" name="fotky[]" />

...
<input type="file" name="fotky[]" />

php:
//nevim, ktery index je prvni, jeslti nazev, nebo pole tech fotek, takze to napisu tak, ze prvni bude nazev

foreach($_FILES["fotky"] as $fotka){
move_uploaded_file($fotka["tmp_name"],"...");
}


doufam, ze sem to napsal dobre, musel bych to vyzkouset, ale ted nemam cas. Ktery index je prvni muzes zjistit pomoci var_dump($_FILES) a podle toho pak upravit ten kod.
Jinak na zip musis mit knihovnu a pak existuji ruzne tridy pro praci se zipem, pohledej a urcite neco najdes

Nahlásit jako SPAM
IP: 147.32.97.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
mORb0
Stálý člen
24. 10. 2007   #7
-
0
-

To Tocimanko : ja na svojom hostingu nemam tiez podporu zip ale poslali zdrojaky cez ktore by to malo ist.. este som to neskusal.. posielam v prilohe.. Zalezi podla toho ako s tym chces pracovat.. ja som si toto spravil preto tak, pretoze to nebudem uploadovat ale nahravat na server rovno cez ftp a este uvidim ci rozbalene alebo zabalene.. to je asi jedno :D (ale pravdepodobne asi zabalene aby si to uzivatel mohol naraz stiahnut) ..jednoducho mi to takto vyhovuje viac.. aj kvoli tomu ze ja naopak budem uploadovat na server velke baliky fotografii..

Svoj priklad som uviedol len ako moznost ale samozrejme sa to da vyriesit aj javascriptom.. napr. Gmail tak funguje.. (teda kod som nepozeral ale myslim ze to je javascript :D )

Nahlásit jako SPAM
IP: 91.127.38.–
www.milankohut.com
Tocimanko0
Grafoman
25. 10. 2007   #8
-
0
-

Uau :) Zaujimave skripty! Ak mi prestane vyhovovat moje riesenie (ktore som uz konecne vcera asi pol dna hladal a je uvedene nizsie), tak toto rozhodne pouzijem.. vyzera to byt jednoduche.. Ibaze ma strasne sere, ze konecne ked som nasiel nejake celkom vhodne riesenie, tak som bol upozorneny na toto : http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=6334-prace-s-zip-v-php
Preco je zivot taky kruty???? :smile10:

A teda to moje riesenie:

<?php

// set up the settings
$ftp_server = 'ftp://domena.tld';
$ftpuser = 'username';
$ftppass = 'password';

// delete the below variables if you decide to use a form.
$source_file = 'C:\nieco.jpg';
$destination_file = 'nieco.jpg';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftpuser, $ftppass);
if(!$login_result){echo 'Nepodarilo sa pripojit!';}
$result=ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); // the ftp function
if(!$result){echo 'Nepodarilo sa uploadovat subor!';}

// close the connection
ftp_close($conn_id);

?>

Nahlásit jako SPAM
IP: 195.91.54.–
vendo
~ Anonymní uživatel
3 příspěvky
14. 12. 2008   #9
-
0
-

Páni, mám obdobný problém, ale oveľa širší. Chcel by som vytvoriť v podstate editovací publikačný portál, kde by si užívateľ mohol vkladať fotky. Neviem nájsť problematiku a syntaxe príkazov vkladania fotiel a celých súborov do SQL databáze, ako sa potom na také súbory dotázať, problematiku automatického pomenovávania takýchto súborov vrátane automatickej kontroly, upozornenie na velkostné limity týchto fotiek resp. v PHP kod na automatické resampovanie...

niečo som našiel, viem že sa preferuje vkladanie do adresára, ale ak uploadujete 1500 fotiek z nejakej akcie tak je najlepšie to vkladať do databázy SQL, lebo niekedy potrebujete aby si tú fotku proste nikto nestiahol... to nemusím vysvetlovať fotografom, že sa nájdu chytráci, čo s vašou oddrenou robotou chcú aj kšeftovať... a to človeka naštve ak tam stojí pekných pár hodín, vrazí do všetkého peniaze, ťažko si vybaví aj robotu, ešte nohy bolia, potom doma po nociach upravovať fotky...

Ale tiež nemám na mysli iba striktne fotogalériu, ale celkový portál, kde sa dajú vkladať celé články, s výberom viacerých layoutov, s možnosťou zistenia rozlíšenia obrazovky cez Javascript alebo PHP, pre uplného amatéra. Vieme, že velkosť fotky si znalý človek upraví už sám, napríklad cez Actions v photoshope alebo iných freeware, teda dávkovo... Tiež vieme že je nezmysel uploadovať dávkovo na server 4MB fotky ak z toho majú byť 150 kB súbory. Javascript to nezvládne urobiť na strane klienta a PHP si uploaduje. Ale pokial takúto vec má obslúžiť človek ktorý nemá ani páru o tom čo je to rozlíšenie pre web, tak to už je problém.

Ale povedzme, že by sa podarilo nahratie fotiek z aparátu do počítača obslúžiť nejakým freesoft plus nadstavbovým skriptom ktorý by to ukladal do nejakého už default adresára. Tým by sa odstránili problémy s dlhým uploadom. (pritom nehovorím že tie fotky nie sú upravené aspon na jas a kontrast...)

Ale potom by to chcelo skript, ktorý by bud komunikoval s týmto „domácim“ skriptom, alebo by aspon skontroloval rozsah povolených velkostí obrázku napríklad jpg. A potom by tieto fotky podla nejakého klúča premenoval, pričom by mal niečo ako auto increment, a kontroloval by či takéto názvy už neexistujú, alebo nie je prázdne miesto, lebo to súvisí aj s editáciou, pokial by sme chceli vymeniť poradie-prioritu fotiek pri zobrazení.

ďalšia vec je vôbec definovať ďalšie možné problémy pri prevádzke takejto databáze. Napríklad určite dude dávkovo treba vytvoriť v databáze aj normálne fotky asi 150 kB, aj thumbnaily okolo 19 kB... taktiež bude treba takýto počet treba deliť na podadresáre, napríklad nejaký ples svadba tak to dám povedzme obrad, do 18.00, do 21.00, do polnoci, do tretej rána, atď, pretože by to bolo neprehladné. A s tým súvisí tvorba hlavného adresára a hlavného linku, podstrán-podlinkov, a to tiež ukladať na nejakú navigačnú stránku, pričom by si skript mal stážiť či táto stránka nie je preplnená, to znamená, ak dám limi 15 linkov na navigačnú stránku, mal by upozorniť že sa to nedá, ale ponúknuť automaticky nejakú zmenu stromovej štruktúry, a tú tiež vykonať automaticky.

UFFFFFF, som teda náročný, čo??? A to nehovorím o tom že by som chcel vytvoriť skript aby si dotyčný mohol vytvoriť HTML layout podla svojich predstáv, a to buď jednorazový, alebo tak že ho použije dávkovo, napr. viď stránky Shark.sk alebo agem.sk...

No teda, tam bude zrejme nutné vytvoriť iba zvlášť databázu na zbieranie indexov, ak by človek sa mal s prehladom a rýchlo pohodlne dostať ku položke ktorú chce editovať alebo znazať.

Taktiež netreba zanedbať možnosť, že to bude novinový portál, kde automaticky bude treba články aj s fotkami a layotmi pridávať do zvláštnej databázy, ktorá sa volá archív, a umožniť rýchle vyhladávanie v ňom, pričom automaticky pri mazaní položky bude presunutá do archívu, alebo sa zároven duplicitne skopíruje aj do archívu, ale samotný hlavný článok bude mať iba obmedzené časové trvanie. Pokial by to bol obchodný portál pridali by sa tam položky kedy bol tovar už predaný (autobazár je jednorazová položka), alebo vyradený. Taktiež je vhodná spolupráca s databázou skladových zásob.

Taktiež treba brať do úvahy únosné riziko fragmentácie databáz pri výskyte velkých súborov, teda BULBy, zvážiť či vkladať iba texty alebo celé textové súbory. Aj keby som zvážil možnosť ukladať tieto fotky a súbory iba do adresára na serveri (aj keď cez nejaké include PHP zabezpečeného adresárika), Bola by nutná ďalšia oblužná databáza SQL, ktroá by sa s PHP skriptom starala o názvy, editáciu, mazanie, premiestňovanie, premiestňovanie a správu linkov, teda takmer to isté... ktovie čo by bolo rozummnejšie...

Ak vkladám textový článok, chcem ho formátovať, entery, mäkké entery, boldy italiky... odsadenia...

myslím že sa to dá ale nebolo by pre užívatela jednoduchšie tam vložiť celý texťák??? viem že teraz hovorím somarinu lebo by to muselo byť v rtf... navyše vkladať fotky... ano bude treba urobiť jednouchý wyswig editor, s tým že sa kliknutím na ULOŽIŤ tieto info nahrá do DB SQL, počká WAIT povedzme 5 sekúnd a potom dá nejaký refreh F5... Aby užívatel mal možnosť to hneď zhodnotiť a do formulára napríklad napísať: Políčko posunúť fotku viac vpravo... napr, 25 px... a hneď vidí výsledok... to by sa cez php dalo... teda zmazanie starého kodu a vloženie nového... blbosť, vložiť to ako premennú rovno do databázy, kolko bude mať odskok cez DIV od kraja stránky...

Základy skriptovania poznám, ale nerobil som v ničom komplexnom, žiadny PERL, ani C... akurát PHP, Javascript, HTML, CSS, tak ma ospravedlnte... ja chcem programovať písaním nie na makro blokoch úrovni... vebo chcem tomu aj rozumieť... možno v budúcnosti... istým veciam aj tak nerozumiem prečo to funguje tak ako funguje... napríklad prečo pri uploade treba najprv otvoriť jpg na čitanie... ale hádam sa do toho dostanem... zatial mám len sedliacky rozum a nesmejte sa...

vendo@mailcity.com
retriever007@azet.sk

Nahlásit jako SPAM
IP: 84.47.101.–
peter
~ Anonymní uživatel
4014 příspěvků
7. 4. 2010   #10
-
0
-

aj tak ti foto pajcnu ked ho budu mat na vystupe CTRL PRT SCR ci co

Nahlásit jako SPAM
IP: 217.23.247.–
sputnikone+1
Věrný člen
7. 4. 2010   #11
-
0
-

Curo evidentně před uvedením Aurory povolil archeologický průzkum...

Nahlásit jako SPAM
IP: 147.251.53.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 39 hostů

Podobná vlákna

Hromadný upload fotek — založil Paja2

Hromadný insert — založil Paja2

Hromadný convert — založil rycmond

Hromadný mail — založil jatt

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý