Я делаю веб-сайт с файлами, и я делаю около 95%, но имею одну проблему. Когда пользователь нажимает на свой файл, чтобы загрузить его, файл просто появляется в браузере. Мне нужно знать способ, где я могу определить $file
переменный в while
цикл, чтобы быть загружены. Переменная, которую мне нужно загрузить, окружена звездочками (*)
LOOP:
$directory = 'uploads/' . $_SESSION['user'] . '/';
if ($handle = opendir($directory)) {
echo '<h3>Your files are listed below</h3>';
while ($file = readdir($handle)) {
if ($file != '.' && $file != '..') {
echo '<a href="'.$directory.'/'.$file.'">' . *$file*.'<br>';
}
}
}
Это будет выполняться в onclick, с полем подтверждения подтверждения,
<?php
$directory = 'uploads/' . $_SESSION['user'] . '/';
if(isset($_REQUEST['DelFile'])) {
$DeleteFile = $_REQUEST['DelFile'];
if(file_exists($directory.$DeleteFile)) {
@unlink($directory.$DeleteFile);
header("location:SamePageURL.php?msg=1");
} else header("location:SamePageURL.php?msg=2");
}
if ($handle = opendir($directory)) {
echo '<h3>Your files are listed below</h3>';
while ($file = readdir($handle)) {
if ($file != '.' && $file != '..') {
echo '<a target="_blank" href="'.$directory.'/'.$file.'">' . $file.' <a href="javascript:deletedata('.$file.')>Delete</a> <br>';
}
}
}
if(isset($_REQUEST['msg'])) {
$Message = $_REQUEST['msg'];
if($Message == 1) echo "File deleted sucessfully";
else if($Message == 1) echo "File not found";
}
?>
<script type="text/javascript">function deletedata(FileName){if(window.confirm("Wish to Delete (Press OK) or Cancel")) window.location="SamePageURL.php?DelFile="+FileName;}</script>
Обычно каждый нетекстовый файл загружается автоматически. Для текстовых файлов вам нужно указать заголовок в начале вашего скрипта:
header("Content-Disposition: attachment; filename=".$file);
Вам нужно перенаправить своих пользователей на второй скрипт для обработки запроса:
download.php? файл = somepath/somefile.ext
<?php
$file_url = $_GET['file'];
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url);
?>
Ваша ссылка будет:
echo '<a href="download.php?file='.$directory.'/'.$file.'">' . $file.'<br>';
проблема - заголовок, проверьте ссылку для получения дополнительной информации: