Загрузить файл в структуру файла, сформировать данные в базе данных - PullRequest
0 голосов
/ 20 декабря 2010

Проведена юридическая экспертиза, еще раз возвращаюсь к экспертам. Пожалуйста, прости мое невежество, новое для всего этого.

Я пытаюсь создать форму, которая позволяет пользователям:

  • Вставка значений различных полей формы в таблицу базы данных mysql - просто, здесь нет проблем.
  • Прикрепите файл, сохраненный в файловой структуре (в папке с названием «документы»).
  • Сохраните имя файла, размер, тип (pdf, txt и т. Д.) В той же записи.

После загрузки файла таблица будет содержать:

  • id (автоинкремент)
  • имя (текстовое поле, созданное пользователем)
  • описание (текстовое поле, созданное пользователем)
  • Имя файла (например, text.txt, добавляется автоматически при загрузке)
  • Размер файла (например, 362455 [КБ], добавляется автоматически при загрузке)
  • Тип файла (например, pdf, автоматически добавляется при загрузке)

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

База данных и форма верны, файл php, который я публикую, является загадкой. Есть идеи?

<form method="post" id="addForm" action="includes/insert_news.php">                   
<table class="addForm" cellspacing="0">
  <tr>
    <th>Name:<span class="greenText">*</span></th>
    <td><input name="name" type="text" class="textBox required" value="Friendly Document Name" maxlength="80" /></td>
  </tr>
  <tr>
    <th>Description:<span class="greenText">*</span></th>
    <td><textarea name="description" class="textBox required">Document description blah blah</textarea></td>
  </tr>
  <tr>
    <th>File:</th>
    <td><input name="file" class="textBox" /></td>
  </tr>
  <tr>
    <th>&nbsp;</th>
    <td><input type="image" class="button" src="images/button_submit.gif" /></td>
  </tr>
</table>

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Интересно, ты сказал, что

Я успешно сохранил файлы на папка но

но я думаю, что вы ничего не получаете в $_FILES, потому что эта вещь отсутствует в вашем form tag

<form enctype="multipart/form-data"> 
0 голосов
/ 20 декабря 2010

Предполагая, что вы уже добавили недостающую вещь, указанную @shakti, и изменили <input>, добавив type="file", и, поскольку вы не дали никакой информации о своем php-коде, попробуйте следующее:

<?php
class UploadFile{

//declare some variables in corresponding to your database field here, like fields, table name and stuffs

public function attach_file($file) {
    if($file['error'] != 0) {
        //do something
    } else {
        $this->temp_path    = $file['tmp_name'];
        $path_parts         = pathinfo($file['name']);
        $this->filename     = $path_parts['extension'];// to get the filename
        $this->type         = $file['type'];// to get the file type
        $this->size         = $file['size'];// to get the size
        $this->name         = $name;
        $this->description  = $description;
    }
}


public function save() {        
    $target_path = "/some/folder";
    if(move_uploaded_file($this->temp_path, $target_path)) {
        if($this->create()) {
            unset($this->temp_path);
            return true;
        }
    } else {
        return false;
    }
}

public function create() {
    //your INSERT INTO
}
?>

и в вашем insert_news.php:

<?php
require_once("class/location");
if($_FILES['file']) {
    $news = new UploadFile();
    $news->attach_file($_FILES['main_picture'], $_POST['name'], $_POST['description']);
    if($pic->save()){
        //do something
    }
}
?>

не проверял это, но я надеюсь, вы поняли: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...