Olen tekemässä Dropbox-tyylistä palvelua, jonne käyttäjät voivat uploadata tiedostojaan ja jakaa niitä kavereilleen, tai pitää yksityisenä. En ole tekemässä julkista, vaan tämä tulisi vain ja ainoastaan kaveripiirin iloksi.
Mietin, että jokaisella käyttäjällä olisi oma kansio /files -kansiossa, joka on juuressa (Linux).Siksi tiedostot /files-kansiossa, koska muuten tämä onnistuisi?: http://palvelin.com/kayttaja/yksityinentiedosto Sivut ovat /var/www:ssä. Tiedot tiedostoista tietokannassa.
Mutta miten saada ladattua tiedostoja tuolta /files-kansiosta? Lataa-nappia painaessa palvelin generoisi linkin, joka olisi voimassa lyhyen ajan, josta tiedoston lataaminen onnistuisi? Vai miten tämä kannattaisi ratkaista?
Pahoittelut, että tuli hieman sekava teksti. Voin kyllä tarvittaessa selventää.
Tiedostot kannattaa tietenkin pitää poissa sivun julkisesta osasta.
Tiedostot saat ladattua käyttäjille muuttamalla otsikkotietoja, esim. tuolla tavalla.
Linkin voit muodostaa tiedoston lisäysvaiheessa ja ylläpitää se tietokannassa, johon lisäät myös viitteen tiedostoon, käyttäjätiedot sekä ajankohdan milloin tiedostoa saa ladata, datetime + x. Tällöin linkki sekä tiedoston latausaika on kaikille sama.
Toinen vaihtoehto on muodostaa erilliseen linkit tauluun "Lataa" - painikkeen klikatessa uuden yksilöllisen latauslinkin, joka toimii datetime + x ajan.
Linkin voisit muodostaa esimerkiksi osittain taulun id:n ja jonkun toisen merkkijonon tiivisteestä.
http://palvelin.fi/file/
Linkkeihin tiedoston tunnisteeksi tarvitaan vain tiiviste. Ei sen tiivisteen tarvitse perustua tiedoston nimeen tai tietokantarivin id:hen, ihan riittää sha1(uniqid(true) . 'foobar').
/var/www on btw vähän jo vanhentunut käytäntö. Filesystem Hierarchy Standardin mukaan webbisivut pitäisi hostata hakemistosta /srv. Siitä eteenpäin standardi ei ota kantaa, millä tavoin alihakemistot järjestellään. Mulla on tapana laittaa webbijärjestelmät hakemistoon /srv/http/palvelun_nimi, jolloin kyseisen järjestelmän julkinen juurihakemisto olisi /srv/http/palvelun_nimi/public.
Aihe on jo aika vanha, joten et voi enää vastata siihen.