2015-03-09 2 views
2

Привет, я знаю основы php и что. Я недавно открыл его и обучил себя новым методам. Поэтому, пожалуйста, медведь со мной ...Загрузка документа Word, сохранение его на mysql и его отображение

В этой задаче я должен загрузить документ MS Word через php, сохранить его на mysql и получить его при необходимости.

Возможно ли это? Если файл, такой как .doc, хранится в той же базе данных, что и имя, фамилия, адрес электронной почты и т. Д. Или я должен хранить его как BLOB в отдельной базе данных для загрузки файлов? Я не уверен, что mysql может читать каждую строку в файле .doc? Благодарю. Есть ли примеры онлайн для начинающих, как я? Я уже провел исследование. Некоторые люди говорят, что я не должен использовать mysql для хранения текстовых файлов, другими словами, я могу. я в настоящее время:

<form action="insert.php" method="post"> 
<label>First Name:</label><input type="text" name="firstname" id="firstname"/><br> 
<label>Last Name:</label><input type="text" name="lastname" id="lastname"/><br> 
<label>Email:</label><input type="text" name="email" id="email"/><br> 
<div><label id="upload">Select file to upload: 
<input type="file" id="upload" name="upload"/></label></div><br> 
    <input type="submit" name=submit value="Submit"/> 
</form> 
+1

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

+1

У вас всегда может быть столбец «doc_path» и хранить ссылку на файл в базе данных, а не на сам документ. –

+1

Я лично не хранил никаких ФАЙЛОВ в базе данных, для этого есть FILEsystem. Сохранение ссылки на хранилище .doc в вашей базе данных достаточно. –

ответ

2

Есть несколько темы, которые будут обсуждаться здесь.

Форма

Чтобы загрузить файл, изменить атрибут формы ENCTYPE.

<form action="insert.php" method="post" enctype="multipart/form-data"> 
    : 
</form> 

Сохранение файла

Вы можете сохранить файл в базе данных, или так же, как файл в системе сервера диска. Независимо от того, что вы выберете, нет необходимости разбивать файл на свои строки. Храните файл как единое целое.

Read this entry which discusses the topic.

Это должно быть достаточно, чтобы сказать здесь, что ваше поле базы данных должен быть соответствующий тип и размер для хранения файла.

Лично я являюсь поклонником хранения файла на диске и имени файла в базе данных.

обработка загрузки файла

Вы можете сохранить файл somwehere на диске. Это не лучший способ сделать это, но самый простой для демонстрации. Есть достаточно примеров на SO, например How to upload & Save Files with Desired name

$info = pathinfo($_FILES['upload']['name']); 
$ext = $info['extension']; // get the extension of the file 
$newname = "newname.".$ext; 

$target = 'mydocs/'.$newname; 
move_uploaded_file($_FILES['upload']['tmp_name'], $target); 

Загрузка файла Чтобы файл отображается и скачать, просто распечатать содержимое веб-обозревателю.

ob_start(); 
// do things. See below 
ob_clean(); 
flush(); 
readfile($file); 
ob_flush(); 

Это отобразит файл и, возможно, путает браузер. Чтобы сообщить браузеру о работе с файлом как документе Word, вы должны отправить соответствующие заголовки в браузер перед отправкой файла.

ob_start(); 
    if(isset($_REQUEST['dlink'])) 
    { 
     $file = $_REQUEST['dlink']; 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename='.basename($file)); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($file)); 
     ob_clean(); 
     flush(); 
     readfile($file); 
     exit; 
    } 
ob_flush(); 
Смежные вопросы