2010-09-02 2 views
0

Это должно быть легко сделать, но я понятия не имею даже после нескольких дней поиска.Создание ссылки на сохраненный файл на сервере в MySQL

Я создал простую веб-форму с помощью PHP, которая позволяет пользователям загружать файлы изображений на сервер, а также информацию, например. дата, имя файла (уникальное, автоматически переименованное при загрузке) и т. д. вводятся в таблицу MySQL create.

Могу ли я узнать, как создать ссылку на «уникальное имя файла», загруженную в поле MySQL при отображении, поэтому, когда пользователь щелкнет, он автоматически откроет хранимый файл сервера на уникальное имя файла?

Цените, если кто-нибудь может мне помочь в этом. Заранее спасибо.

+0

Я не понимаю вашего вопроса. Вы знаете уникальное имя файла, и знаете, как его получить из db. Что вы не можете сделать? – fabrik

+0

Возможно, я не стал четко указывать. Мне удается загрузить файл на сервер и ввести соответствующую информацию в таблицу MySQL. То, что я не могу сделать, - это позволить пользователю щелкнуть по имени файла в таблице MySQL и получить/открыть загруженный файл. – cys

ответ

2

Если предположить, что таблица содержит поля id, type (MIME тип) и data (двоичные данные), это PHP скрипт для этого:

<?php //dispimg.php 
//example usage: dispimage.php?id=123 
$my = new MySQLi('localhost', 'user', 'pass', 'db'); 
$sql = sprintf('SELECT type, data FROM table WHERE id="%s" LIMIT 1', $my->real_escape_string($id)); 
if(!$queryResult=$my->query($sql)){ 
    //query failed, log mysqli_error() somewhere 
} 
elseif(!$queryResult->num_rows){ 
    header('HTTP/1.1 404 Not Found'); 
    echo 'File not found'; 
} 
else($res=$queryResult->fetch_assoc()){ 
    //optionally, use application/octet-stream instead of a field from database 
    header('Content-Type: '.$res['type'])); 
    // uncomment following line if you want to present the file as download 
    //header('Content-Disposition: attachment;filename=download'); 
    echo $res['data']; 
} 
?>