var
Buf: ^TBytes;
s:string;
...
AssignFile(xls, 'data.xls');
Reset(xls, 1);
xls_size:= FileSize(xls);
buf := AllocMem(xls_size);
BlockRead(xls, Buf^, xls_size, readed); // считываю весь двоичный файл в buf
s:= IdEncoderMIME1.EncodeBytes(tbytes(buf)); // кодирую
s:= IdDecoderMIME1.DecodeString(s)// тут же декодирую и на выходе получаю порченные данные - не совпадают с исходным файлом 'data.xls';
Response.Content:= IdEncoderMIME1.EncodeBytes(buf^);
Response.Content:= IdEncoderMIME1.EncodeBytes(buf);
//Кодирование
procedure TForm1.Button1Click(Sender: TObject);
Var
s1, s2: TFileStream;
begin
if od1.Execute then
Begin
s1:=TFileStream.Create(od1.FileName, fmOpenRead);
s2:=TFileStream.Create(od1.FileName+'.mime', fmCreate);
en1.Encode(s1, s2);
s1.Free;
s2.Free;
End;
end;
//Декодирование
procedure TForm1.Button2Click(Sender: TObject);
Var
s1, s2: TFileStream;
begin
if od1.Execute then
Begin
s1:=TFileStream.Create(od1.FileName, fmOpenReadWrite);
s2:=TFileStream.Create(Copy(od1.FileName, 1, Length(od1.FileName)-5), fmCreate);
de1.DecodeBegin(s2);
de1.Decode(s1);
de1.DecodeEnd;
s1.Free;
s2.Free;
End;
end;
//Кодирование
procedure TForm1.Button1Click(Sender: TObject);
Var
s1: TFileStream;
ss: TStringStream;
begin
if od1.Execute then
Begin
s1:=TFileStream.Create(od1.FileName, fmOpenRead);
ss:=TStringStream.Create;
en1.Encode(s1, ss);
//Далее, проводите операции по записи полученной строки в файл xml
...
WriteLn(ФайлXML, ss.ReadString(ss.Size));
...
s1.Free;
ss.Free;
End;
end;
ss1:= TMemoryStream.Create;
ss2:= TMemoryStream.Create;
ss1.LoadFromFile('1.xlsx'); // файл который в base64 должен быть
EncodeStream(ss1, ss2);
ss1.Clear;
ss1.Write('<xml>', 2*5);
ss2.Position:=0;
ss1.CopyFrom(ss2, ss2.Size);
ss1.Write('</xml>', 2*6);
Response.ContentStream:= ss1;
<?xml version="1.0"?>
<file>Тары-бары-растабары-Ваш-закодированный-файл</file>
//Кодирование
procedure TForm1.Button1Click(Sender: TObject);
Var
s1: TFileStream;
ss1, ss2: TStringStream;
sutf8: TUTF8String;
begin
if od1.Execute then
Begin
sutf8:='<?xml version="1.0"?><file>';
s1:=TFileStream.Create(od1.FileName, fmOpenRead);
ss1:=TStringStream.Create;
ss2:=TStringStream.Create(sutf8);
en1.Encode(s1, ss1);
ss2.Seek(ss2.Size);
ss2.CopyFrom(ss1);
ss2.WriteString('</file>');
Response.ContentStream:= ss2;
s1.Free;
ss1.Free;
ss2.Free;
End;
end;
sutf8:='<?xml version="1.0"?><file>';
s1:=TFileStream.Create('1.xlsx', fmOpenRead);
ss1:=TStringStream.Create;
ss2:=TStringStream.Create(sutf8);
en1.Encode(s1, ss1);
//ss2.CopyFrom(ss1, ss1.Size); // здесь ошибка Stream read error, если закоментить, то будет ошибка Status: 500 Invalid pointer
ss2.WriteString('</file>');
Response.ContentType:='text/xml';
Response.ContentStream:= ss2;
s1.Free;
ss1.Free;
ss2.Free;
//Кодирование
procedure TForm1.Button1Click(Sender: TObject);
Var
s1: TFileStream;
ss1, ss2: TStringStream;
sutf8: UTF8String;
begin
if od1.Execute then
Begin
sutf8:='<?xml version="1.0"?><file>';
s1:=TFileStream.Create(od1.FileName, fmOpenRead);
ss1:=TStringStream.Create;
ss2:=TStringStream.Create(sutf8);
en1.Encode(s1, ss1);
ss2.Seek(ss2.Size);
ss2.WriteString(ss1.DataString); //!!Обратите внимание!!
sutf8:='</file>';
ss2.WriteString(sutf8);
Response.ContentStream:= ss2;
s1.Free;
ss1.Free;
ss2.Free;
End;
end;
sutf8:='<?xml version="1.0"?><file>';
s1:=TFileStream.Create(www_dir+xls_cach_dir+caching_xls, fmOpenRead);
ss1:=TStringStream.Create;
ss2:=TStringStream.Create(sutf8);
en1.Encode(s1, ss1);
ss2.Position:= ss2.Size; // ничего не меняет
ss2.WriteString(ss1.DataString);
sutf8:='</file>';
ss2.WriteString(sutf8);
Response.ContentType:='text/xml';
Response.ContentStream:= ss2;
s1.Free;
ss1.Free;
ss2.Free;
s1:=TFileStream.Create(www_dir+xls_cach_dir+caching_xls, fmOpenRead);
ss2.Seek(ss2.Size);
ss2.Seek(ss2.Size, soFromBeginning);
ss2.Position:= ss2.Size;
Response.ContentStream:= ss2;
Response.Content:= ss2.DataString;
procedure Twm.WebModule1rootAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.