Autor | Zpráva | ||
---|---|---|---|
Papinak Profil |
#1 · Zasláno: 23. 5. 2016, 19:10:34
Zdravím,
dělám v PHP jednu aplikaci, u které potřebuju nastavit chmod souboru, který si uživatel bude chtít stáhnout. Bylo by nejlepší, kdyby to šlo nějak on-the-fly, protože se mi moc nechce jenom kvůli chmodu vytvářet kopii souboru. Předem díky :) |
||
juriad Profil |
#2 · Zasláno: 23. 5. 2016, 19:21:36
Možná jsem nepochopil otázku; zkusím dvě pravděpodobné varianty:
1) Chceš, aby stažený souboru měl určitý mód. Do tohoto nemá server co mluvit, ten posílá jen proud bytů a prohlížeč rozhoduje o tom, jak ten soubor uloží na disk. 2) Soubor je normálně nepřístupný webovému serveru. Ty mu chceš před stažením nastavit mód takový, aby k němu mohl uživatel skrze webový server přistoupit a stáhnout jej. Toto bych nedělal. Prostě soubor dej někam, kam webový server nemá přístup (pomocí .htaccess je zakázaný), a soubor servíruj pomocí PHP funkce readfile. |
||
Papinak Profil |
#3 · Zasláno: 23. 5. 2016, 19:23:55
Mám jeden fyzický soubor, ke kterému může být v DB více názvů i chmodů. Já tento soubor potřebuji stáhnout s takovým chmodem, který mu zrovna přijde z DB.
|
||
juriad Profil |
#4 · Zasláno: 23. 5. 2016, 19:28:13
To není možné. Mód se nikde při stahování neposílá.
Content-Disposition obsahuje jen jméno, které prohlížeč může a nemusí respektovat.
Jediné řešení by bylo nabídnout ke stažení zazipovaný/zatarovaný soubor, protože archivy uvnitř obsahují informaci o módech. |
||
Papinak Profil |
A je možné vytvořit archiv, do kterého nasypu jeden nebo více souborů (se mnou upravenými chmody), bez toho aniž by se uložil na serveru a nabídnul se uživateli ke stažení?
|
||
juriad Profil |
#6 · Zasláno: 23. 5. 2016, 19:41:53
Ne, nejspíš není možné se vyhnout tomu stádiu, kdy je ZIP na disku, už kvůli tomu, že server musí poslat hlavičku
Content-Length , a tedy by musel cachovat celý obsah zipu v paměti, což vyjde nastejnou jako když si ho odlije na disk. Po stažení jej můžeš smazat, nebo to nechat na nějakém CRONu.
Omlouvám se, ZIP neukládá sám o sobě oprávnění, ale je to možné, byť nespolehlivé. Přečti si stackoverflow.com/questions/10735297/maintain-file-and-folder-permissions-inside-archives |
||
Papinak Profil |
#7 · Zasláno: 23. 5. 2016, 19:49:16
Ještě bych se chtěl zeptat co se stane, když změním chmod souboru, pošlu ho uživateli ke stažení a přišel by v průběhu stahování někdo jiný, kdo by si chtěl stejný soubor stáhnout s jiným chmodem. Ovlivní to nějak stahování prvního uživatele (předpokládejme využití funkce chmod())?
|
||
Keeehi Profil |
Papinak:
A uživatelé windows co? Windows nemají přístupová práva jako unix systémy. „Ještě bych se chtěl zeptat co se stane, když změním chmod souboru, pošlu ho uživateli ke stažení a přišel by v průběhu stahování někdo jiný, kdo by si chtěl stejný soubor stáhnout s jiným chmodem.“ Pokud mu vytvoříš vlastní archiv, tak ho to neovlivní. Pokud ten archiv přepíšeš jiným, může se stát spousta různých věcí závisejíchích na spoustě různých faktorů. |
||
Časová prodleva: 9 let
|
0