mysql — PHP — принудительная загрузка файла с URL

У меня проблемы. Я создал веб-страницу с загружаемыми файлами, у меня есть база данных (MySQL) с правильным URL-адресом к файлу (путь к файлу) (в базе данных есть только URL-адрес файла, файл находится в папке на сервере). И теперь я пытаюсь написать / найти скрипт php, чтобы загрузить этот файл, который был загружен. Все в сети работает хорошо, но скрипты этой загрузки не работают. Я читаю, и я думаю, что лучший способ для меня будет скачать с заголовком, но я пытался и ничего. Файл загружается на наш диск, имя правильно, расширение файла в порядке, файл открыт в правильной программе, но если файл имеет имя с символами (‘;’, ‘:’ и т. Д.), Файл загружается без этих символов и является неправильным ( отсутствие расширения, плохое имя). И вторая проблема: все загруженные файлы пусты (размер 0 б), все в порядке, но они пусты, некоторые советы? Заранее спасибо за помощь

Мои плохие коды загрузки:

<?php
$data=date('Y-m-d_H:i:s');
$nazwa=$_POST['downtitle'];
$urlek=$_POST['downurl'];
$extrozsz=$_POST['downext'];
$filePath = $urlek;
$fileName = $nazwa.$data.".".$extrozsz;

//------------------------------------------------------------------------

//  $fd = fopen($filePath,"r");
//  $size = filesize($filePath);
//  $contents = fread($fd, filesize($filePath));

//  fclose($fd);

//  header("Content-Type: application/octet-stream");
//  header("Content-Length: $size;");
//  header("Content-Disposition: attachment; filename=$fileName");

//  echo $contents;

//----------------------------------------------------------------------//      set_time_limit(0);
//      while( $urlek = $response->fetch() )
//      {
//      $my_pliki = file_get_contents("$urlek");
//      $my_file = fopen("$urlek","w+");
//      fwrite($my_file,$my_pliki);
//      fclose($my_file);
//      }

//----------------------------------------------------------------------------

$quoted = $filePath;
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);

?>

2

Решение

Параметр имени файла имеет некоторые ограничения, которые хорошо описаны в RFC6266

Поэтому, если вы хотите использовать символы, которых нет в наборе символов ISO-8859-1, вам необходимо использовать либо filename* заголовок или вам нужно удалить / заменить эти символы из имени файла. Хорошее решение для этого можно найти Вот

0

Другие решения

Хорошо, теперь все в порядке, но другая проблема. У меня есть код для показа новостей на сайте. Все новости показываются одновременно (слишком длинный сайт). Я хотел бы, чтобы внизу номера сайтов (на всех сайтах под это для пересылки на второй подстранице со старыми новостями). Но как это сделать? Sup или sub для небольших слов, чисел и т. Д., Но все они извлекаются из базы данных:

$zapytanie='SELECT * FROM filetable WHERE Section="Other" ORDER BY ID DESC LIMIT 10';

Это в моем запросе php-кода для отображения последних 10 новостей, но если я добавлю обычно маленькие цифры внизу, как построить код для отображения следующих 10 новостей (нет там, где id = «10-11», потому что если у меня будет 1 тысяча новостей или более это слишком примитивно) У меня должен быть автоматический код для отображения страниц со следующими 10 или 20 новостями как?

0

Спасибо, я редактирую свой php на этом:

<?php
$data=date('Y-m-d_H:i:s');
$nazwa=$_POST['downtitle'];
$urlek=$_POST['downurl'];
$extrozsz=$_POST['downext'];
$filePath = $urlek;
$fileName = $nazwa.$data.".".$extrozsz;

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"" . $fileName."\"");
header("Content-Description: File Transfer");
readfile($filePath);

?>

И теперь все в порядке, но у меня есть один вопрос: в базе данных MySQL у меня есть заголовок, описание, дата добавления, дата премьеры и я хочу иметь поле поиска. Я сделал это в input type = «search», но какой скрипт сейчас используется для поиска в указанных таблицах в базе данных, сначала откройте базу данных, которую я знаю, но что позже, какая команда для поиска в базе данных? Я знаю о «как», но лучше? И в конце концов верните правильный результат и покажите все из базы данных, где это поисковое слово в порядке. Несколько советов? Извините за слабый английский и спасибо.

0
По вопросам рекламы [email protected]