Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Загрузка файлов в THTMLViewer и TFrameBrowser

Delphi , Интернет и Сети , Браузер

Загрузка файлов в THTMLViewer и TFrameBrowser

Code:

unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Readhtml, FramView, FramBrwz, HtmlView;
 
type
TForm1 = class(TForm)
   FrameBrowser1: TFrameBrowser;
   procedure FormCreate(Sender: TObject);
   procedure FrameBrowser1GetPostRequest(Sender: TObject; IsGet: Boolean;
     const URL, Query: String; Reload: Boolean; var NewURL: String;
     var DocType: ThtmlFileType; var Stream: TMemoryStream);
   procedure FrameBrowser1ImageRequest(Sender: TObject; const SRC: String;
     var Stream: TMemoryStream);
public
   BaseDir: string;
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
BaseDir := 'F:\Download\';
FrameBrowser1.LoadURL('file://F:\Download\index.htm');
end;
 
procedure TForm1.FrameBrowser1GetPostRequest(Sender: TObject;
IsGet: Boolean; const URL, Query: String; Reload: Boolean;
var NewURL: String; var DocType: ThtmlFileType;
var Stream: TMemoryStream);
var
S, sType: string;
F: TFileStream;
P: Integer;
begin
S := StringReplace(URL, '|', ':', [rfReplaceAll]);
 
P := Pos(':', S) + 2;
sType := Copy(S, 1, P);
 
Stream := TMemoryStream.Create;
 
if AnsiLowerCase(sType) = 'file://' then
begin
   S := StringReplace(Copy(S, P + 1, MaxInt), '/', '\', [rfReplaceAll]);
 
   F := TFileStream.Create(S, fmOpenRead);
   try
     Stream.CopyFrom(F, F.Size);
   finally
     F.Free;
   end;
end;
end;
 
procedure TForm1.FrameBrowser1ImageRequest(Sender: TObject;
const SRC: String; var Stream: TMemoryStream);
begin
{}
end;
 
end.
Взято из http://forum.sources.ru

Автор: Smike

Программный код, предоставленный вами, - это приложение Delphi, использующее компоненты TFrameBrowser и THTMLViewer, чтобы загружать HTML-файлы из директории. Процедура FormCreate устанавливает базовую директорию для загрузки HTML-файлов и загружает начальную файлу "index.htm". Процедура FrameBrowser1GetPostRequest обрабатывает POST-запросы, копируя файлы из указанного URL в паметный поток.

Вот разбивка на части:

  • TForm1: Это основная форма класса, наследуясь от TForm. Она имеет несколько компонентов, включая FrameBrowser1, который является экземпляром TFrameBrowser.
  • BaseDir: Эта свойство хранит базовую директорию для загрузки HTML-файлов.
  • FormCreate: Это процедура, вызываемая при создании формы. Она устанавливает базовую директорию и загружает начальную файлу "index.htm".
  • FrameBrowser1GetPostRequest: Это процедура обрабатывает POST-запросы, копируя файлы из указанного URL в паметный поток.
  • FrameBrowser1ImageRequest: Эта процедура пустая, что означает, что она не делает ничего при получении запроса на изображение. Вам может потребоваться реализация этой процедуры в соответствии с вашими требованиями.

Вот некоторые советы по улучшению кода:

  • Обработка ошибок: Процедура FrameBrowser1GetPostRequest не обрабатывает потенциальные ошибки, которые могут возникнуть при копировании файлов или операциях с паметными потоками. Вам нужно добавить блоки try-except для ловли и обработки исключений.
  • Нормализация пути к файлу: Код использует как forward slashes (/), так и backslashes (\) в путях к файлам, что может вызвать проблемы на различных операционных системах. Вам нужно использовать константу PathDelim из единицы SysUtils, чтобы нормализовать пути к файлам.
  • Организация кода: Код является quite длинным и сложным. Рекомендуется разбить его на более маленькие процедуры или функции, чтобы улучшить читаемость и поддержку.

Вот альтернативное решение для процедуры FrameBrowser1ImageRequest:

procedure TForm1.FrameBrowser1ImageRequest(Sender: TObject; const SRC: String; var Stream: TMemoryStream);
begin
  // Загружаем файл изображения с диска
  F := TFileStream.Create(SRC, fmOpenRead);
  try
    Stream.CopyFrom(F, F.Size);
  finally
    F.Free;
  end;
end;

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

Статья описывает процесс загрузки файлов в компоненты THTMLViewer и TFrameBrowser, используя пример на языке Delphi, демонстрирующий реализацию функций загрузки файлов и обработки запросов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 15:13:26/0.0039398670196533/0