Desidero nascondere la posizione della cartella di download in modo che quando l'utente scarica un file non possa vedere la posizione. Penso che questo possa essere fatto usando un file .htaccess ma come posso fare questo? In alternativa, come può essere fatto con PHP?come nascondere la posizione attuale della cartella di download
risposta
Questo è come lo faccio in PHP:
<?php
$fakeFileName= "fakeFileName.zip";
$realFileName = "realFileName.zip";
$file = "downloadFolder/".$realFileName;
$fp = fopen($file, 'rb');
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fakeFileName");
header("Content-Length: " . filesize($file));
fpassthru($fp);
?>
Inoltre, se non si vuole a chiunque di avere accesso al percorso del file, inserire un file denominato .htaccess
nella vostra cartella di download con solo i contenuti :
deny from all
Ho modificato leggermente il codice. Innanzitutto quando dico falso nome di file e nome di file reale, il nome file falso è il nome che il downloader scaricherà il file come, dove il nome file reale è il nome del file effettivo nella cartella di download sul server.
Inoltre, controllo per verificare che l'utente abbia effettuato l'accesso e sia in grado di scaricare il file. Se sceglie di scaricare il file, un file PHP viene chiamato in una nuova scheda (con il codice per il download dall'alto), poi alla fine del file che ho la riga:
exit;
Così, quando si fa clic su il link per il download, una pagina vuota si apre in una nuova scheda rapidamente, quindi esce rapidamente e inizia il download.
EDIT: Il link per il download simile a questa:
<a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a>
Dove id
è la id
del download nel database, e in script scaricare dall'alto trovo la voce con quella id
, quindi ottenere il suo vero nome del file e il nome del file falso. Puoi farlo senza il database però.
Forse dovresti esaminare Mod Rewrite o utilizzare lo script PHP per poter accedere al file semplicemente andando a file.php?f=someHash
e quindi utilizzando un flusso ottetto per costringere l'utente a scaricare il file.
+1: questa sarebbe la soluzione ideale. Passare tutti i download attraverso uno script PHP non significa solo spostare la directory dei dati dalla radice pubblica, ma è possibile anche sovrapporre i controlli di sicurezza. Idealmente non fare riferimento ai file per nome file, utilizzare un ID che si associa al file in modo che il nome possa essere modificato a piacimento senza rompere i collegamenti esistenti. – michael
Quello che vorrete fare è indirizzare l'utente a fake_url.php
e quindi riscrivere quell'URL in un altro file - real_url.php
. Ciò rende efficacemente lo real_url.php
come nascosto poiché l'utente non è a conoscenza del reindirizzamento che si verifica nel file .htaccess
.
RewriteRule fake_url.php(.*)$ real_url.php?$1 [L,QSA]
Nella tua real_url.php
, è possibile leggere i parametri passati attraverso il reindirizzamento e quindi usare qualcosa di simile a readFile()
per inviare il file appropriato indietro per l'utente dall'interno real_url.php
Così l'utente vedrà solo la URL -
https://my-secret-site/download.php?file=file_to_download
E nel tuo real_url.php
saprete quale file è stato richiesto ispezionando il parametro $_GET['file']
.
L'effettiva posizione dei file che l'utente sta scaricando non ha più importanza. Tutti i download vanno da fake_url.php
e solo lo script deve conoscere la posizione reale della cartella dei download.
Penso che la parte principale sia "scrivere su .htaccess", che può essere fatto semplicemente con il comando fwrite, ma questa soluzione non funzionerà se si sta dando all'utente, una scelta di lettura online del pdf perché in questo caso socket ha la necessità di aprire per più tempo (in qualche modo, se si esegue questa operazione, allora questo può compromettere la sicurezza!),
<?php
session_start();
$fileLocation = getenv("DOCUMENT_ROOT") . "your_download _folder/.htaccess";
$file = fopen($fileLocation,"w");
$k="\.(md|htaccess)$";
$content = "IndexIgnore *
Order Deny,Allow
Deny from All
AddType application/octet-stream .pdf";
fwrite($file,$content);
fclose($file);
$p=getenv("DOCUMENT_ROOT") . "your_download _folder/".$_SESSION['x'](file_to_be_downloaded !);
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=".$_SESSION['x']);
readfile($p);
$fileLocation = getenv("DOCUMENT_ROOT") . "your_download _folder/.htaccess";
$file = fopen($fileLocation,"w");
$k="\.(md|htaccess)$";
$content = "IndexIgnore *
Order Allow,Deny
Deny from All
AddType application/octet-stream .pdf";
fwrite($file,$content);
fclose($file);
exit;
?>
Risultato: nella finestra successiva (che verrà chiuso nel momento successivo), un l'opzione di download del file verrà attivata dall'utente.
- 1. Come ottenere la cartella di download dell'utente in Qt?
- 2. Modifica la posizione della cartella node_modules
- 3. Come modificare la posizione della cartella `web root` di EasyPHP?
- 4. Come cambiare la posizione della cartella di archiviazione Influxdb?
- 5. Mostra la posizione attuale dell'utente con MKMapView?
- 6. Cambiare EditorTemplates posizione della cartella
- 7. Come trovare l'indice della posizione attuale nella cronologia del browser
- 8. python - Ricerca della cartella "Download" dell'utente
- 9. VS2012 Test unità: come modificare la posizione della cartella TestRisultati
- 10. Android PagerAdapter, ottenere attuale posizione
- 11. Come ottengo la posizione attuale del punto di inserimento?
- 12. youtube-dl posizione download
- 13. Ottieni la posizione attuale su Google Map
- 14. Come centrare la mia posizione attuale in MKMapView?
- 15. Cartella download Github come zip
- 16. Ottieni utente attuale Posizione android
- 17. Come scaricare a livello di codice la cartella di download di Windows "% USERPROFILE%/Download"?
- 18. Come utilizzare la stima della posizione attuale di interpolazione lineare tra due coordinate geografiche?
- 19. come ottenere la posizione attuale lat lungo in ios 8?
- 20. Come determinare la posizione del Paese attuale di un dispositivo Android indipendentemente dalle impostazioni della posizione dell'utente?
- 21. GMSMapView miaPosizione non dando posizione attuale
- 22. come posso ottenere il nome della città della mia posizione attuale?
- 23. come accedere alla cartella download in Android?
- 24. VS2015: come nascondere la cartella "Riferimenti" in solution explorer?
- 25. Posizione attuale Nav Senza Scroll-Linked posizionamento
- 26. Come posso ottenere la velocità attuale della rete dell'iPhone?
- 27. Drupal: come cambiare la lingua attuale della tassonomia
- 28. Come modificare la posizione della punta della freccia di NSPopover?
- 29. Recupero della matrice ModelView attuale
- 30. Come centrare l'immagine nello specifico div in base alla posizione attuale della finestra?
No, non è possibile. Questa è una cosa fondamentale per consentire all'utente di fare ciò che vuole con il file che sta scaricando. – yent
Penso che intenda come nascondere l'URL dello script di download – michael
@yent in realtà voglio solo nascondere la posizione dell'utente in cui esiste il file –