Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 01.11.2013
Сообщений: 12
1

Загрузить файл без сохранения

01.07.2020, 15:02. Просмотров 96. Ответов 4
Метки нет (Все метки)

Здравствуйте, подскажите пожалуйста.
Требуется загрузить txt фаил на сервер, но без сохранения, а сразу его распарсить.
Txt приблизительно такой с пробелом в качестве символа разделителя.
Код
data1 name1 team1
data2 name2 team2
data3 name3 team3
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2020, 15:02
Ответы с готовыми решениями:

Сформировать файл и отдать клиенту без сохранения на сервере, как реализовать ?
Есть данные которые необходимо записать в файл "txt" и отдать клиенту, при этом файл нельзя...

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

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

изменение разрешения картинки без сохранения
Возможно глупость, а может и нет. Цель такова: Есть одна картинка 500х500. На одной странице нужно...

4
459 / 345 / 143
Регистрация: 31.08.2019
Сообщений: 943
01.07.2020, 16:22 2
Цитата Сообщение от Highlander_nt Посмотреть сообщение
загрузить txt фаил на сервер, но без сохранения
Сохранение в /tmp выполняется без участия скрипта,
типа такого, по минимуму
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
header('Content-Type: text/html; charset=utf-8');
?><!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>upload.php</title>
</head>
<body>
<?php
 
$ERRORS = $MESSAGES = array();
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//-----------------
    do {
        if (empty($_POST) && empty($FILES)) {
            $ERRORS[] = '$FILES is empty. Возможно размер файла > '. ini_get('post_max_size');
            break;
        }
        $MESSAGES[] = 'Получены данные формы';
        
        if(!isset($_FILES["xfile"], $_FILES["xfile"]['tmp_name'])) {
            $ERRORS[] = '$_FILES["xfile"]["tmp_name"] is empty.';
        }
        $MESSAGES[] = 'Имя временного файла "'. $_FILES["xfile"]['tmp_name'] .'"';
        
        if (! is_uploaded_file($_FILES['xfile']['tmp_name'])) {
            $ERRORS[] = 'Ошибка загрузки файла.';
            $arr = [
                1 => 'Размер принятого файла превысил upload_max_filesize',
                2 => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме: '. $_POST['MAX_FILE_SIZE'],
                3 => 'Загружаемый файл был получен только частично',
                4 => 'Файл не был загружен',
                6 => 'Отсутствует временная папка',
                7 => 'Не удалось записать файл на диск',
                8 => 'PHP-расширение остановило загрузку файла'
            ];
            $ERRORS[]= isset( $arr[$_FILES["xfile"]['error']]) ? $arr[$_FILES["xfile"]['error']]
                : 'Unknown error';
            $ERRORS[] = 'Содержимое: <xmp>$_FILES = '. var_export($_FILES, 1) ."</xmp>\n";
            break;
        }
        $MESSAGES[] = '<b>Файл загружен.</b>';
        $MESSAGES[] = 'Полученное имя "'. $_FILES["xfile"]['name'] .'"';
        $MESSAGES[] = 'Содержимое: <xmp>$_FILES = '. var_export($_FILES, 1) ."</xmp>\n";
 
/*  $file = '..........';
        if (! move_uploaded_file($_FILES["xfile"]['tmp_name'], $file)) {
            $ERRORS[] = 'Ошибка сохранения файла: "'. $file .'"';
            break;  
        }
        $MESSAGES[] = "<b>Файл '$file' сохранён.</b>";
*/
        if (!$array = file($_FILES["xfile"]['tmp_name'], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES )) {
            $ERRORS[] = 'Ошибка чтения файла: "'. $_FILES["xfile"]['tmp_name'] .'"';
            break;              
        }
        echo "<xmp>\n \$array = ", var_export($array, 1), "\n</xmp>\n";
        
    } while(0);
}
 
if ($MESSAGES) {
    echo '<ul><li>', implode("</li><li>\n", $MESSAGES), "</li></ul><hr/>\n";
}
if ($ERRORS) {
    echo '<ul style="background:#EE7;color:#800"><li>', implode("</li><li>\n", $ERRORS),
        "</li></ul><hr/>\n";
}
?>
 
<form enctype="multipart/form-data" action="" method="POST">
    <!-- MAX_FILE_SIZE до поля загрузки файла -->
    <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /
 
    <label for="xfile">Файл: </label>
    <input name="xfile" type="file" accept=".txt"/>
    <input type="submit"/>
</form>
 
</body>
</html>
Нет гарантии что загружен файл точно такого формата, какой нужен.
Нет гарантий что файл не бинарный например, или не содержит например html-тегов, или не содержит не utf-8 символов, ..
... без дополнительных проверок/фильтрации


Цитата Сообщение от Highlander_nt Посмотреть сообщение
с пробелом в качестве символа разделителя
Разделителя в каждой строке, или единственно-возможного разделителя?
... возможно нужен двумерный массив, как если изменить массив так
PHP
1
        array_walk($array, function(&$el){ $el = explode(' ', $el);}, $array);
0
1 / 1 / 0
Регистрация: 01.11.2013
Сообщений: 12
01.07.2020, 20:23  [ТС] 3
Проверку планировал выполнить как тут.https://snipp.ru/php/uploads-files
Я просто думал есть вариант как например с simplexml_load_file.
Загнать в переменную а дальше обрабатывать.
А может будет безопаснее не грузить фаил, а текстовое поле для ввода сделать типа токого?
HTML5
1
 <textarea name="data" cols="40" rows="3"></textarea></p>
0
Эксперт PHP
4088 / 3347 / 1436
Регистрация: 24.04.2014
Сообщений: 10,066
01.07.2020, 20:42 4
Можно или не пользоваться стандартным механизмом загрузки файлов, а на js сделать свой, который будет в тело запроса вставлять содержимое файла.
PHP
1
2
3
4
$f = fopen('php://stdin', 'rb');
while (false !== ($row = fgetcsv($f, 0, ' '))) {
    var_dump($row);
}
Или отключить на php загрузку файлов https://www.php.net/manual/ru/... le-uploads (и возможно это тоже https://www.php.net/manual/ru/... ta-reading)
Но тогда придется самому разбирать тело запроса в формате multipart/form-data.
0
459 / 345 / 143
Регистрация: 31.08.2019
Сообщений: 943
01.07.2020, 20:47 5
Цитата Сообщение от Highlander_nt Посмотреть сообщение
будет безопаснее не грузить фаил, а текстовое поле для ввода сделать типа токого?
Практически так-же, тоже можно получить всё что угодно.
Я-бы выбрал способ который удобнее для добропорядочных пользователей ,) отправляющих нормальные данные

Добавлено через 3 минуты
Цитата Сообщение от x_lab Посмотреть сообщение
способ который удобнее для добропорядочных пользователей
возможно оба способа, на выбор
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2020, 20:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Отправка капчи на распознование(без сохранения на HDD))
С помощью curl'а скачиваю капчу. В результате получаю строковую переменную, в которой содержится...

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

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

СРОЧНО! Как отправить файл на FTP без сохранения на ПК?
Здравствуйте! Мне нужно создать текстовый документ: echo &quot;бла бла бла&quot;&gt;1.txt Но я хочу, чтобы...

Как зарыть файл без сохранения (Excel/VBA )?
Как закрыть .xls без сохранения, чтобы не выскакивало окно с вопросом о сохранении изменений в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.