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");
Ответы
Ответ 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 должен даже очистить после себя и удалить временный файл.