Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Monen tiedoston upload

Sivun loppuun

trinit [03.08.2003 17:17:27]

#

Olen tekemässä erästä projektia PHP:llä jossa pitäisi siirtää lomakkeen kautta tiedostoja palvelimelle. Nyt vain tuli mieleen että olisko mitään vinkkiä miten tuollainen kannattaisi toteuttaa? Lähettäviä tiedostoja voi käyttäjästä rippuen olla vaikka satoja joten ei ihan houkuttele varmaan käyttäjääkään painella "Browse" painiketta niin montaa kertaa ja valita tiedostot yksitellen.

Joten onko ehdotuksia miten toteuttaisin tuon vai jääkö ainoaksi vaihtoehdoksi tuo Browsen painelu?

edit: FTP tiedostonsiirtoja ei kannata ehdottaa koska projektin pitäisi toimia ilman sitä.

Tulilintu [03.08.2003 17:25:20]

#

Hmmm... No senhän voisi tehdä vaikka niin että käyttäjä antaa tiedostoille jonkilaisia maskeja kuten /jokin/kumma/kansio/*.*

trinit [03.08.2003 19:23:03]

#

lainaus:

Hmmm... No senhän voisi tehdä vaikka niin että käyttäjä antaa tiedostoille jonkilaisia maskeja kuten /jokin/kumma/kansio/*.*

Niinhän sen voisi mikäli olisi mahdollista? Mielestäni alla olevaan koodiin ei tuollaista maskia saa, koska Browse-nappulan takaa tuleva ikkuna ei anna valita kuin yhden tiedoston kerrallaan.

<form enctype="multipart/form-data" action="upload.php" method="POST">
    Tiedosto: <input name="tnimi" type="file">
    <input type="submit" value="Lähetä">
</form>

Kaikkein paras olisi jos yo. koodilla saisi esiin sellaisen ikkunan josta voisi valita kaikki tiedostot kerralla ja vain kerran tarvitsisi painaa submittia.

Antti Laaksonen [04.08.2003 00:30:06]

#

Enpä ainakaan minä tiedä, kuinka tuollainen olisi mahdollista. Mutta onnistuisiko niin, että käyttäjä tekee kaikista kopioitavista tiedostoista yhden zip-paketin, ja lähettää sen lomakkeen kautta palvelimelle. Tämän jälkeen skripti purkaa tiedostot palvelimelle käyttäjän hakemistoon (valmiita ratkaisuja tähän löytynee).

Tulilintu [04.08.2003 10:01:57]

#

lainaus:

Niinhän sen voisi mikäli olisi mahdollista? Mielestäni alla olevaan koodiin ei tuollaista maskia saa, koska Browse-nappulan takaa tuleva ikkuna ei anna valita kuin yhden tiedoston kerrallaan.

No itseasiassa ajattelin että sen voisi ihan itse kirjoittaa. Tuollaisen ikkunan voisi popupeillä ja javascriptillä toteuttaa, mutta ei sekään kovin älykästä olisi. Tai toinen vaihtoehto olisi tehdä flashillä lomake josta tiedostoja voisi valita ja lähettää tiedostojen polut suoraan suoraan PHP'lle.

Voisin ehkä jossain kohtaa kokeilla tehdä tuollaisen.

trinit [04.08.2003 11:39:28]

#

lainaus:

käyttäjä tekee kaikista kopioitavista tiedostoista yhden zip-paketin, ja lähettää sen lomakkeen kautta palvelimelle.

Tätä olen ajatellut itsekin. PHP:lle on olemassa zip-paketteja lukeva kirjasto, mutta en juuri nyt muista pystyikö sillä purkamaan tiedostota. Täytyy tutkia asiaa.

Tulilintu [04.08.2003 11:45:26]

#

No purkaminen onnistuu ainakin seuraavasti shell_exec("unzip mikalie.zip /mikalie"). En ole varma toimiiko tuo kaikkialla.

ctrl+alt+del [06.08.2003 07:37:32]

#

Mitenkäs olisi tämmöinen että luet kansion sisällön siististi formille, jokainen omalle rivilleen checkboxin taakse. Käyttäjä valitsee checkboxeihin siirrettävät tiedostot, ja loopissa vain kopioit (siirrät) valitut tiedostot palvelimelle.

Noin sen saisi toimimaan ilman zippiviritystä ja ilman turhaa jokaisen tiedoston kerrallaan valitsemista. Php:stä löytynee funkkari jolla tiedostot vaihtavat sijaintia käyttäjän tietämättä.

mikaelh [06.08.2003 21:08:21]

#

lainaus:

PHP:lle on olemassa zip-paketteja lukeva kirjasto, mutta en juuri nyt muista pystyikö sillä purkamaan tiedostota.

Sillä pystyy vain purkamaan tiedostoja. Pakkaamaan sillä ei pysty.

Ohimennen voin mainita, että pakkaaminen on mahdollista esim. tällä kirjastolla:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/phpmyadmin/phpMyAdmin/libraries/zip.lib.php3?rev=1.7

lainaus:

Mitenkäs olisi tämmöinen että luet kansion sisällön siististi formille, jokainen omalle rivilleen checkboxin taakse. Käyttäjä valitsee checkboxeihin siirrettävät tiedostot, ja loopissa vain kopioit (siirrät) valitut tiedostot palvelimelle.

Mitenköhän ajattelit PHP:lla lukea käyttäjän kovalevyltä jotain? JavaScriptille on kyllä olemassa ActiveX-viritelmiä kovalevyn lukemiseen, mutta sen käyttäminen kysyy aina käyttäjältä lupaa. Ja nuo ActiveX hommelitkin toimivat vain IE:ssä.

lainaus:

No purkaminen onnistuu ainakin seuraavasti shell_exec("unzip mikalie.zip /mikalie"). En ole varma toimiiko tuo kaikkialla.

Tuo tapa ei toimi läheskään kaikkialla. Ensinnäkin Safe Mode ei saa olla päällä, mikä tiputtaa jo aika suuren osan palvelimista pois pelistä.

NiLon [09.08.2003 07:35:46]

#

Ei taida olla html:ässä mahdollisuuksia tähän koska sitä ei ole tarkoitettu siirtämään tiedostoja.
Taitaa jäädä mahdollisuudeksi ftp tai tuo zippaus.

k-mikko [11.08.2003 04:11:25]

#

Rupesi kiinnostamaan Geocities-sivutilaa joskus käyttäneenä, siellähän on sellainen monen tiedoston yhtäaikainen lataus toteutettu monella tiedosto-kentällä. HTML-lähdekoodista voisi ohimennen vilkaista, löytyisikö vastaus sieltä. Toki kysymyksessä voi olla jokin ASP- tai vastaava viritys...

trinit [11.08.2003 15:54:03]

#

lainaus:

Rupesi kiinnostamaan Geocities-sivutilaa joskus käyttäneenä, siellähän on sellainen monen tiedoston yhtäaikainen lataus toteutettu monella tiedosto-kentällä.

Kyllä tämän tiedän ja olen sen jo toteuttanutkin niin, että yksittäisiä tiedostoja voi lähettää enintään 10 kpl. ja isommat määrät sitten zip-paketissa. Yksittäisten tiedostojen lähetyslomake on tällainen: http://www.saunalahti.fi/~trinit/tero_pietila/kuvat/lahetys.jpg . Mutta takaisin aiheeseen - kuvittelepa että jos joku haluaisi lähettää esim 100 tiedostoa em. lomakkeella niin joutuisi sen sata kertaa klikkaamaan Browse-painikettakin.

ZIP-paketin lähetys- ja purkutoimintoja en ole vielä ehtinyt tekemään.

NiLon [14.08.2003 11:46:24]

#

Niin tuohan on juuri se mitä ei haluttu, mutta parempi odotella jotain muuta tai käyttää esim javaa jos siinä tälläinen on.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta