Загрузка файла html / php - PullRequest
       6

Загрузка файла html / php

1 голос
/ 29 марта 2012

В настоящее время я пытаюсь загрузить CSV-файл в базу данных с помощью простого HTML, а затем PHP. Моя проблема в том, что мне нравится знать, как все работает / что на самом деле происходит (наверное, поэтому у меня так много вопросов)

Так или иначе, мой HTML выглядит следующим образом:

<html>
<form action="mysite.php" method="POST">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

Мой PHP просто:

<?php
echo 'Success';
?>

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

Создан ли он как временный файл на сервере? Сохранено на сервере оперативной памяти? Это на самом деле ничего не делает, так как не сказано ничего делать (иначе: сохранить в БД)

Спасибо

Ответы [ 5 ]

2 голосов
/ 29 марта 2012

Да, это будет временный файл на сервере, но в вашем случае это не так, потому что вы пропустили тип кодировки:

<form enctype="multipart/form-data" action="__URL__" method="POST">

Вот руководство по загрузке файлов Загрузка php файлов

Вы можете увидеть, что загружено, выполнив var_dump ($ _ POST) для имен переменных и var_dump ($ _ FILES) для данных файла, чтобы помочь понять.

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

1 голос
/ 29 марта 2012

Я настоятельно рекомендую прочитать this

По сути, файл загружается через HTTP, а php сохраняет его во временном файле на сервере.

Вы можете получить дескриптор этого временного файла, используя глобальный массив $_FILES.

0 голосов
/ 29 марта 2012

Файл должен быть сохранен во временный файл на сервере, и вы можете узнать информацию о нем, используя $_FILES superglobal.Вы можете начать с изменения своего скрипта, чтобы выгрузить суперглобальный элемент, чтобы увидеть, что находится внутри:

<?php 
print_r($_FILES); 
?> 

PHP предоставляет набор полезных функций для загрузки файлов, и вы должны использовать их, а не просто добираться дофайловая система - помните, что любая загрузка файла считается пользовательским вводом и, следовательно, становится угрозой безопасности!Вы должны начать с проверки, является ли файл тем, который вы ищете:

$filename = $_FILES['attachment']['tmp_name'];
if (!is_uploaded_file($filename)) {
    // error
}

И вы можете использовать функцию move_uploaded_file(), чтобы прикрепить файл куда-нибудь удобнее:

if (move_uploaded_file($_FILES['attachment']['tmp_name'], '/more/useful/path') {
    // all good
}

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

Здесь есть тонна полезных вещей: http://uk.php.net/manual/en/features.file-upload.php

0 голосов
/ 29 марта 2012

Файл сохраняется временно, пока работает скрипт.Информацию можно найти в $ _FILES.

0 голосов
/ 29 марта 2012

Когда вы загружаете файл, он сохраняется на сервере, после чего, если вы хотите импортировать этот CSV в базу данных, вы должны использовать php-скрипт для его анализа ( CSV Parser ) и вставки в базу данных. Или, если вы хотите сохранить только путь к файлу, а не данные из CSV, вы должны хранить только путь к файлу в базе данных.

...