Загрузить файл на сайт программно?
Я использую Lazarus. У меня есть приложение с компонентом webbrowser, которое заходит на веб-сайт, загружает страницу, как показано ниже (см. HTML-код ниже), и заполняет различные входные данные. Последний ввод - это файл для загрузки. Я бы хотел, чтобы мое приложение "щелкнуло" по кнопке "Обзор", выберите нужный файл и откройте. После этого я мог бы опубликовать форму ИЛИ просто загрузить файл и продолжить.
1
У меня есть следующий HTML-код на сайте:
<td align="left" class="RequiredInput">File:</td>
<td class="datafield">
<form name="frmMain" id="frmMain" action="upload.asp?step=2&output=1" method="post" enctype="multipart/form-data">
<input type="file" name="filename" id="filename">
</form>
Я попытался выполнить JS из моего приложения: document.getElementById('filename'). Value = 'C: \ x.csv'
2
Я попытался использовать следующий код HttpPostFile из синапса:
uFileName := 'C:\x.csv';
uStream := TFileStream.Create(uFileName, fmOpenRead);
uList:=TStringList.Create;
if HttpPostFile('upload.asp?step=2&output=1', 'filename', uFileName, uStream, uList) then
ShowMessage('OK');
Он ничего не сделал (я следил за активностью приложения с Fiddler)
Любая помощь будет оценена.
Заранее спасибо,
Жолт
1 ответ
Это известная проблема, и есть решение, но вам придется преобразовать ее из С# в Delphi.
Другое возможное решение - загрузить файл с помощью API URL Moniker. Затем загрузка произойдет в тот же сеанс WebBrowser
контроль уже используется. Есть статья в MSKB:
Как обрабатывать POST-запросы в подключаемом обработчике протокола
POSTMON.EXE
Образец ссылки на статью исчез с веб-сайта Microsoft, но все еще можно найти здесь.