Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2015, 19:56   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Плиз дайте рабочий пример отправки файлов рисунков на сервер POST запросом delphi7->Php

Я спрашивал это в теме:
http://www.programmersforum.ru/showt...=279160&page=2
В последнем моем ответе скрипт, который якобы работает, но у меня реально не посылает файл.

Очень хотелось бы видеть реальный рабочий пример

П.С. На сервере запрос принимает PHP.
Illusiony вне форума Ответить с цитированием
Старый 18.06.2015, 21:26   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Код относительно нормальный, за исключением неправильного имени.
Код:
$_FILES['userfile']
Код:
formData.AddFile('userfile',fileName,'application/octet-stream');
Это касалось поста http://www.programmersforum.ru/showp...9&postcount=17
eoln вне форума Ответить с цитированием
Старый 18.06.2015, 21:45   #3
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Код относительно нормальный, за исключением неправильного имени.
Код:
$_FILES['userfile']
Код:
formData.AddFile('userfile',fileName,'application/octet-stream');
Это касалось поста http://www.programmersforum.ru/showp...9&postcount=17

т.е. вместо
Код:
userfile
вставить реальное имя файла?
Illusiony вне форума Ответить с цитированием
Старый 18.06.2015, 21:54   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Нет, просто замени строку
Код:
formData.AddFile('sfile',fileName,'application/octet-stream');
на
Код:
formData.AddFile('userfile',fileName,'application/octet-stream');
eoln вне форума Ответить с цитированием
Старый 18.06.2015, 21:58   #5
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Нет, просто замени строку
Код:
formData.AddFile('sfile',fileName,'application/octet-stream');
на
Код:
formData.AddFile('userfile',fileName,'application/octet-stream');

Сделал, нов коде который последним идет в том посте. Он мало чем отличается.
Теперь ответ:
Код:
value1:value2-Z:\tmp\php3523.tmpFile is valid, and was successfully uploaded.
Но такого файла нету в данной папке. Что то все равно не так. Походу в php нужно правильно задать чтобы файл нормально сохранялся.


Получилось, для этого написал в php
Код:
$uploaddir = 'Z:\tmp\test.txt';
в результате имя файла='test.txtfile_for_server.txt'

1)Странно, а почему он не сохраняется без этого пути с именем txtfile_for_server.txt?

Если сделать
Код:
$uploaddir = 'Z:\tmp\p';
то файл в итоге pfile_for_server.txt
Если
Код:
$uploaddir = 'Z:\tmp\';
то ошибка

Не знаю как задать путь на реальном сервере к папке?
в таком виде:
Код:
/home/admin/web/funprograms.ru/public_html/test_save_file/p
не сохраняется
в таком
Код:
test_save_file/p
тоже

Последний раз редактировалось Illusiony; 18.06.2015 в 22:19.
Illusiony вне форума Ответить с цитированием
Старый 18.06.2015, 22:29   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Но такого файла нету в данной папке. Что то все равно не так. Походу в php нужно правильно задать чтобы файл нормально сохранялся.
Точно нету? Может просто папка не обновилась в просмотровщике.
Вот кусок из моего приёмника
Код:
		$uploaddir = 'tmp_img/';
		$uploadfile = $uploaddir . basename($_FILES[('userfile')]['name']);
		if (move_uploaded_file($_FILES[('userfile')]['tmp_name'], $uploadfile)) {
			...	
		}
Файл сохраняется со своим оригинальным именем в папке tmp_img/ Так делать небезопасно

Тут описание http://www.php.su/functions/?move-uploaded-file
eoln вне форума Ответить с цитированием
Старый 18.06.2015, 22:49   #7
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Код:
$uploaddir = 'test_save_file/'; 
$uploaddir = '/test_save_file/';
Сохраняет в рабочей папке сервера а не в рабочая папка/test_save_file/

С именем файла теперь все нормально, спасибо.

С момента нажатия передать файл до ответа сервера проходит около 4 секунд если убираю проверку доступности сервера ( с проверкой около 5 секунд) . Сам файл весит 85 кбайт

((( почему так долго.

У меня на сервер в php.ini в
Код:
upoad_tmp_dir
неактивно.

Последний раз редактировалось Illusiony; 18.06.2015 в 23:06.
Illusiony вне форума Ответить с цитированием
Старый 19.06.2015, 12:32   #8
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

У меня upload 0.5 мбит, так что картинка сама по себе с максимальной скоростью должна предаваться около 1.5 секунды, но остальные 2-3 секунды..... все равно многовато.
Запись ведется на ssd сервера, а так планирую на ram диск на сервере для увеличения скорости.
Illusiony вне форума Ответить с цитированием
Старый 27.06.2015, 17:54   #9
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

В данный момент я создаю файл и потом отправляю его на сервер. А как сразу отправить TBitmap,TPNGObject или TJPEGImage?
Имею в данный момент такое :
Код:
png := TPNGObject.Create; // ???????
                            png.Assign( bmp_Nxoda);
                            png.SaveToFile(St_login+'Nxoda.png');
                         bmp_Nxoda.Free;
                         bmp_Nxoda_prom.Free;
                         png.Free;
                           FileName := St_login+'Nxoda.png';
                              formData := TIdMultiPartFormDataStream.Create;
                           formData.AddFile('userfile',fileName,'application/octet-stream');
                            sss:='http://мой сайт.ru/file_nxoda.php';

                            sss:=idhtp2.Post(sss,formData);
php:
Код:
<?php

	
$param1=$_POST['param1'];
$param2=$_POST['param2'];
echo $param1.':'.$param2;
$file_=$_FILES['userfile']['tmp_name'];
echo '-'.$file_;
$uploaddir = ''; 
if (!is_uploaded_file($_FILES['userfile']['tmp_name'])){
  print "Файл '".$_FILES['userfile']['tmp_name']."' не залился "; die;
}
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print "File is valid, and was successfully uploaded.";
} else {
    print "Не могу залить файл'".$_FILES['userfile']['tmp_name']."' РІ '".$uploaddir . $_FILES['userfile']['name']."'"; die;
}

Последний раз редактировалось Illusiony; 27.06.2015 в 19:24.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка файла на HTTP сервер POST запросом на WinSock Vladimirok Работа с сетью в Delphi 2 14.04.2012 06:26
Программа для отправки файлов на фтп сервер xxx-toretto Общие вопросы Delphi 1 24.01.2011 22:06
Отправка файла POST-запросом на PHP-скрипт... ActiveX Работа с сетью в Delphi 7 20.07.2009 16:54
Клиент на Delphi7 , Сервер на PHP Lime PHP 13 30.06.2009 14:53
PHP-скрипт для отправки файлов pasha814 PHP 2 21.06.2008 21:35