php FILE POST загрузка без сохранения - PullRequest
14 голосов
/ 01 февраля 2012

Я использую простой текстовый файл в скрипте PhP. Есть ли способ обработать файл в скрипте PhP, не сохраняя его локально? Везде я вижу просто загрузку файла и сохранение его. Мне просто нужно извлечь некоторые имена из файла и покончить с этим. У меня все остальное работает, если я использую локальную копию файла, поэтому сохранение его, а затем удаление работает. Мне просто было интересно, есть ли способ пропустить сохранение копии и просто получить эту информацию напрямую.

Загружаем файл сюда.

<html>
<body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label><input type="file" name="file" id="file" /> <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>

и в скрипте, работающем с копией файла, сохраненного локально, я просто использую

$file = fopen($_FILES['file']['name'], "r");

Ответы [ 6 ]

19 голосов
/ 01 февраля 2012

Если его текстовый файл (при условии, что его размер не так велик) обычно вы можете прочитать его по

$contents= file_get_contents($_FILES['file']['tmp_name']);

Если вы не уверены, какой это был тип загрузки, проверьте метод запроса

if(strtolower($_SERVER['REQUEST_METHOD'])=='post')
    $contents= file_get_contents($_FILES['file']['tmp_name']);
elseif(strtolower($_SERVER['REQUEST_METHOD'])=='put')
    $contents= file_get_contents("php://input");
else
    $contents="";
4 голосов
/ 01 февраля 2012

Когда форма отправлена, проверьте свойство $_FILES['input_name']['tmp_name'].Это путь к вашему файлу, сохраненному во временном системном пути /tmp.Вы можете продолжить чтение имени, скажем, file_get_contents(), а затем просто забыть файл.Система позаботится об его удалении.


Чтобы выделить другие ответы, вы можете теоретически прочитать файл, даже не загружая его с помощью JavaScript, см. http://www.html5rocks.com/en/tutorials/file/dndfiles/. Затем отправьте толькоданные, которые вам нужны как часть запроса AJAX.

3 голосов
/ 01 февраля 2012

Файл должен быть сохранен где-то перед чтением в этом случае временного каталога; Вы можете получить содержимое файла из временного каталога, а затем, если вам действительно нужно удалить его. Смотрите следующий код:

$file = file_get_contents($_FILES["ufiley"]["tmp_name"]);

unlink($_FILES["ufiley"]["tmp_name"]); 

//contents would be stored in $file
1 голос
/ 01 февраля 2012

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

$_FILES['uploadedfile']['tmp_name'] 

Вы можете выбрать не сохранять файл и fopen() временный файл, если вы делаете это в том же сценарии, который получает POST.

0 голосов
/ 01 февраля 2012

Вы можете просто использовать $_FILES["file"]["tmp_name"], который будет временным файлом, который был загружен. Как только ваш скрипт завершит работу, PHP должен даже очистить после себя и удалить временный файл.

0 голосов
/ 01 февраля 2012

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

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