![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте дорогие форумчане , столкнулся с проблемой закачки нужных мне файлов конфигураций на веб сервер для резервного копирования .
Код програмы примерно следующий : Код:
begin sleep(5); FileName := 'C:/****Setup.log'; formData := TIdMultiPartFormDataStream.Create; formData.AddFile('file',fileName,'application/octet-stream'); formData.AddFormField('param1', 'value1'); response := idHTTP1.Post('http://локалхост/winlog.php',formData); end; код скрипта куда обращается программа вот такой : Код:
<? copy($HTTP_POST_FILES['file'],"*****Setup.log") ?> Пробывал ещё вот так <? copy($File,"*****Setup.log") ?> Подскажите кто может в чём ошибка? Почему у меня фаил с машины на сервер не копируется??? Заранее благодарен. |
#2
|
|||
|
|||
![]() а у тебя из браузера аплоадится файл нормально?
|
#3
|
|||
|
|||
![]() Нормально вроде бы, всё в ручном режиме фалы льются на сервер , почему программно на делфе реализовать не могу , хз наверно в коде ошибка где то =(
не решаемых проблем нет, есть не приятные для нас решения. |
#4
|
|||
|
|||
![]() ааааапппп ======> =(
не решаемых проблем нет, есть не приятные для нас решения. |
#5
|
||||
|
||||
![]() абсолютно рабочий код:
http://data.cod.ru/61532 Код:
unit Unit1; interface uses IdMultipartFormData, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls; type TForm1 = class(TForm) Button1: TButton; IdHTTP1: TIdHTTP; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses IdHeaderList; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var idmultipartformdatastream: TIdMultiPartFormDataStream; begin IdHTTP1.Get('http://data.cod.ru'); idmultipartformdatastream:=TIdMultiPartFormDataStream.Create; idmultipartformdatastream.AddFormField('action', 'file_upload'); idmultipartformdatastream.AddFormField('password', ''); idmultipartformdatastream.AddFormField('description', 'testing'); idmultipartformdatastream.AddFormField('agree', '1'); idmultipartformdatastream.AddFile('sfile', 'c:\Downloads\background2.bmp', 'application/octet-stream'); try IdHTTP1.Post('http://data.cod.ru/cabinet/upload/', idmultipartformdatastream); except if IdHTTP1.ResponseCode div 100<>3 then raise; Edit1.Text:='http://data.cod.ru'+IdHTTP1.Response.RawHeaders.Values['LOCATION']; end; end; end. idmultipartformdatastream.AddFile('sfile', 'c:\Downloads\background2.bmp', 'application/octet-stream'); Последний раз редактировалось NumLock, 24.06.2010 в 09:26. |
#6
|
||||
|
||||
![]() Я кажется знаю в чем проблема.
Скрипты скачивать нельзя. Если б можно было их качать то небыло бы не одного не взломаного сайта в интернете, так как было бы известны пароли и логины от баз данных а это очень плохо. Когда мы загружаем в браузере ПХП страницу, то сервер выполняет ПХП скрипт и выдает нам згенерированый ХТМЛ код. Если ты пишешь код взаимодействия со своим сервером то вот мой вариант решения такой задачи. Пишем скрипт с возможностью обрабтки входных параметров(POST или GET). результат получаем в виде ХТМЛ кода. Например :'All systems work'. При надобности парсим ответ. Если тебе нужно скачать файл со скриптом со своего сервера который потдерживает FTP то для этого у инди есть спец. компонент. Не твори зла, и жизнь повернется к тебе передом ![]() |
#7
|
|||
|
|||
![]() Цитата:
Просто мне нужно именно не аплоадер чужой чейто заливать файлы а именно на свой сервер где я вот накатал жалкое подобие скрипта в две строчки который бы копировал файлы.Прежде чем браться переделывать расматривать на переделку твой скрипт, это со всеми типами фалов работает , или только картинки грузит ??? Я не совсем понимаю принцип работы связки просто , какие мне нужно передать кроме этих параметров ещё параметры скрипту??? =( Ещё не разу не работал с этим компонентом , и спецификации ограничиваются только синтаксисом , не каких объяснение нету что к чему. не решаемых проблем нет, есть не приятные для нас решения. Последний раз редактировалось winner13, 25.06.2010 в 23:57. |
#8
|
|||
|
|||
![]() Что мне нужно передать скрипту , чтобы он скопировал или закачал на сервер с клиентского компьютера на котором и будет моя программа передавать файл, которы будет копировать или закачивать сервер при таком скрипте ============>
Код:
<?php $uploaddir = '/uploads/logs_rezerv/'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])); ?> СКРИПТ С БРАУЗЕРА СТО ПРОЦЕНТОВ РАБОТАЕТ Нужно чтобы при запуске программы , она сделал запрос на этот скрипт и передала ему логи ... Просто Я сам программирую на пхп больше , чем на делфи , по этому не могу понять принцип работы компонента IdHTTP, кто может помогите доделать , заодно понять принцип работы . Вот что я сделал в делфи : Код:
begin sleep(5); FileName := 'C:/****Setup.log'; formData := TIdMultiPartFormDataStream.Create; formData.AddFile('userfile',fileName,'multipart/form-data'); formData.AddFormField('submit', 'Send File'); response := idHTTP1.Post('http://локалхост/winlog.php',formData); end; НЕ РАБОТАЕТ ЗАРАЗА =(( не решаемых проблем нет, есть не приятные для нас решения. Последний раз редактировалось winner13, 26.06.2010 в 04:37. |
#9
|
|||
|
|||
![]() Так как я по спецификации компонента писал код , эт конечно может глупо но вставил мне непонятную строчку formData.AddFormField('submit', 'Send File');
Честно не знаю что она делает . Просто подогнал её... Вот кстати .html форма откуда из браузера сто процентов получается грузить фалы на сервер Код:
<form enctype="multipart/form-data" action="/winlog.php" method="post"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> Хотел программно просто сделать, вторые сутки не сплю ... не решаемых проблем нет, есть не приятные для нас решения. Последний раз редактировалось winner13, 26.06.2010 в 05:03. |
#10
|
||||
|
||||
![]() Код:
idmultipartformdatastream:=TIdMultiPartFormDataStream.Create; idmultipartformdatastream.AddFormField('submit', 'Send File'); idmultipartformdatastream.AddFile('userfile', 'c:\КАКОЙ-ТО_ФАЙЛ', 'application/octet-stream'); IdHTTP1.Post('http://ТВОЙ_СЕРВЕР/winlog.php', idmultipartformdatastream); принцип работы прост имеется форма: <form method="post" action="/cabinet/upload/" это куда постим: IdHTTP1.Post('http://ТВОЙ_СЕРВЕР/cabinet/upload/', idmultipartformdatastream); в форме поле файла: <input name="sfile" type="file" это добавляем файл: idmultipartformdatastream.AddFile('sfile', 'c:\КАКОЙ-ТО_ФАЙЛ', 'application/octet-stream'); application/octet-stream - да все-равно какой файл будет, чтобы не думать о mime не забываем про скрытые поля: <input type="hidden" name="action" value="file_upload"> если они конечно есть: idmultipartformdatastream.AddFormField('action', 'file_upload'); так же могут быть другие элементы: кнопки, как у тебя: <input type="submit" value="Send File"> idmultipartformdatastream.AddFormField('submit', 'Send File'); чекбоксы, картинки (вместо кнопки отправить например). но это тебе уже не надо) Последний раз редактировалось NumLock, 26.06.2010 в 19:58. |
#11
|
|||
|
|||
![]() Сейчас попробую посмотрим что получится, тока сейчас вернулся к работе своей из командировки . О результатах сообщу чуть позже кому интересно будет +)
не решаемых проблем нет, есть не приятные для нас решения. |