Я пытаюсь загрузить файл из mysql, я сохранил местоположение файла в базе данных, теперь я пытаюсь создать ссылку для скачивания для пользователя на моей странице

#php #mysql

#php #mysql

Вопрос:

Не удалось создать ссылку для скачивания. Я извлекаю путь, сохраненный из базы данных, а затем пытаюсь создать ссылку для его загрузки, но ничего не происходит. Ниже приведен мой код:

 $query_print="SELECT vitae_pi FROM pi WHERE username='t124'";
$query_print_run=mysqli_query($conn,$query_print);
$query_print_recordset=mysqli_fetch_assoc($query_print_run);
$query_print_path=$query_print_recordset['vitae_pi'];
echo ' this is file path '.$query_print_path;
  

Здесь я просто пытаюсь создать ссылку для скачивания для пользователя t124, вместо того, чтобы использовать текущего пользователя для целей тестирования?
Это код гиперссылки:

 <?php echo "<a href='".$query_print_path."'>".DOWNLOAD."</a>"; ?>
  

Есть предложения?

Это моя функция перемещения файла:

 protected function moveFile($file)
{
    $filename = isset($this->newName) ? $this->newName : $file['name'];
    //echo $filename;
    $success = move_uploaded_file($file['tmp_name'], $this->destination . $filename);
    if ($success) {
        $result = $file['name'] . ' was uploaded successfully';
        if (!is_null($this->newName)) {
            $_SESSION['current_filename']=$this->newName;
            echo $_SESSION['current_filename'];
            $result .= ', and was renamed ' . $this->newName;
        }
        else{
            $_SESSION['current_filename']=$file['name'];
            echo $_SESSION['current_filename'];
        }
        //$result .= '.';

        //echo $this->newName;
        $this->messages[] = $result;
    } else {
        $this->messages[] = 'Could not upload ' . $file['name'];
    }
}
  

Обновление таблицы с указанием пути к файлу:

     $file_path_variable1= $destination1.$_SESSION['current_filename'];
echo '$file_path_variable1 : '.$file_path_variable1;

$query1="UPDATE proposal SET whitepaper_prop='$file_path_variable1' WHERE userName_prop='$currentuser'";
$result_query1=mysqli_query($conn,$query1);
  

………………..
КОД РЕШЕНИЯ:
Код решения :

 $query_print="SELECT vitae_pi FROM pi WHERE username='t115'";
$query_print_run=mysqli_query($conn,$query_print);
$query_print_recordset=mysqli_fetch_assoc($query_print_run);
$query_print_path=$query_print_recordset['vitae_pi'];
$dir= 'uploaded/';
$path=opendir($dir);
<?php 
}while($query_pi_array=mysqli_fetch_assoc($query_pi_result));?>
<div>
<?php while($file=readdir($path)){
  if($file != "." || $file !=".."){
  if($file==$query_print_path){ ?>
<a href="<?php echo $dir.$query_print_path; ?>">Proposal Whitepaper</a>
  

Комментарии:

1. у вас есть define('DOWNLOAD', $query_print_path) где-нибудь в вашем коде? Как вы ожидаете DOWNLOAD получить значение, когда вы извлекаете значение из своей базы $query_print_path данных?

2. Нет, я не ожидаю, что ЗАГРУЗКА будет иметь какие-либо значения, я просто использовал ее как текст гиперссылки

Ответ №1:

Что это отображает?

 <?php echo "<a href='".$query_print_path."'>".DOWNLOAD."</a>"; ?>
  

ЗАГРУЗКА должна быть частью строки PHP, если нет, она будет рассматриваться как константа :

 <?php echo "<a href='".$query_print_path."'>DOWNLOAD</a>"; ?>
  

Также используйте двойные кавычки для атрибутов HTML :

 <?php echo "<a href="$query_print_path">DOWNLOAD</a>"; ?>
  

И оптимизированный способ (чтобы избежать бесполезного разбора строк) :

 <?php echo '<a href="'.$query_print_path.'">DOWNLOAD</a>'; ?>
  

Комментарии:

1. Спасибо за ответ, я получаю этот вывод: c:xampphtdocspi_co_pi/uploaded/salsaBOY_30.pdf Это должно быть в идеале c:/xampp/htdocspi_co_pi/uploaded/salsaBOY_30.pdf Я думаю, с косыми чертами спины. Есть предложения ..?

2. Это означает, что ваш путь изначально неверен в вашей базе данных. Поэтому вам нужно искать где-то еще, где вы на самом деле помещаете эти данные в базу данных

3. Тарик Зуин: Это моя функция перемещения файла, я не вижу в этом ничего плохого, может быть, взглянуть на это ..?

4. защищенная функция MoveFile($file) { $filename = isset($this-> newName) ? $this-> Новое имя: $file[‘name’]; //echo $filename; $success = move_uploaded_file($file[‘tmp_name’], $this->назначение . $filename); if ($success) { $result = $file[‘name’] . ‘был успешно загружен’; if (!is_null($this-> newName)) { $_SESSION[‘current_filename’]=$this-> newName; echo $ _SESSION[‘current_filename’]; $result .= ‘, и был переименован ‘ . $this-> Новое имя; } else{ $_SESSION[‘current_filename’]=$file[‘name’]; echo $_SESSION[‘current_filename’]; }//$result .= ‘.’; //echo $this-> Новое имя; $this->сообщения[] = $resu<

5. ; } else { $this->messages[] = ‘Не удалось загрузить’. $file[‘name’];}}