как скрыть фактическое местоположение папки загрузки

Я хочу скрыть местоположение папки для загрузки, поэтому, когда пользователь загружает файл, он не может видеть местоположение. для этого я думаю, что это можно сделать с помощью .htaccess, но как это сделать? и можем ли мы сделать это с помощью php? если мы сможем тогда, как это сделать?

Related of "как скрыть фактическое местоположение папки загрузки"

Вот как я это делаю в 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); ?> 

и поместите файл с именем .htaccess в папку загрузки только с содержимым:

 deny from all 

Я немного изменил код. Во-первых, когда я говорю поддельное имя файла и имя реального файла, поддельное имя файла – это имя, которое загрузчик будет загружать в файл, где реальное имя файла – это имя фактического файла в папке загрузки на вашем сервере.

Кроме того, я проверяю, чтобы пользователь вошел в систему и смог загрузить файл. Если он захочет загрузить файл, PHP-файл вызывается на новой вкладке (с кодом загрузки сверху), а затем в конце файла у меня есть строка:

 exit; 

Поэтому, когда он нажимает на ссылку для загрузки, пустая страница быстро появляется на новой вкладке, затем быстро выходит и начинается загрузка.

EDIT: ссылка для загрузки выглядит примерно так:

 <a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a> 

Где id – это id загрузки в базе данных, а в скрипте загрузки сверху я нахожу запись с этим id , а затем получаю ее реальное имя файла и имя поддельного файла. Вы можете сделать это без базы данных.

Возможно, вы захотите изучить либо Mod Rewrite, либо использовать свой PHP-скрипт, чтобы иметь возможность доступа к файлу, просто перейдя в file.php?f=someHash а затем используя поток октетов, чтобы заставить пользователя загружать файл.

То, что вы собираетесь сделать, – это направить пользователя на fake_url.php а затем переписать этот URL в другой файл – real_url.php . Это фактически делает real_url.php скрытым, потому что пользователь не знает о перенаправлении, происходящем в вашем файле .htaccess .

 RewriteRule fake_url.php(.*)$ real_url.php?$1 [L,QSA] 

В вашем real_url.php вы можете прочитать параметры, переданные через перенаправление, а затем использовать что-то похожее на readFile() чтобы отправить соответствующий файл обратно пользователю из real_url.php

Таким образом, пользователь будет видеть только URL-адрес –
https://my-secret-site/download.php?file=file_to_download

И в вашем real_url.php вы узнаете, какой файл был запрошен, real_url.php параметр $_GET['file'] .

Фактическое местоположение файлов, которые загружается пользователем, уже не имеет значения. Все загрузки идут через fake_url.php и только этот скрипт должен знать реальное местоположение папки для загрузки.

Я думаю, основная часть – «писать в .htaccess», что может быть сделано просто fwrite, но это решение не будет работать, если вы даете пользователю выбор онлайн-чтения PDF-документа, потому что в этом случае сокет должен быть открыт для больше времени (так или иначе, если вы это сделаете, это может поставить под угрозу вашу безопасность!),

 <?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; ?> 

Результат: в следующем окне (которое будет закрыто в следующий момент) пользователю будет предложена опция загрузки файла.