Подтвердить что ты не робот

Php FILE POST upload без сохранения

Я использую простой текстовый файл в 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>

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

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

Ответ 1

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

$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="";

Ответ 2

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


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

Ответ 3

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

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

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

//contents would be stored in $file

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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