如何保存REST.Response.Content PDF文件而不会破坏它? 保存后,我运行PDF并只有白屏。没有内容。
client.BaseURL := URL;
req.Params.Clear();
req.ClearBody();
req.Method := TRESTRequestMethod.rmGET;
try
req.Execute();
except
on e: ERESTException do
begin
//TODO: Error
end;
end;
在req.response.content中我有PDF格式的字符串。但是,当我试图保存它时,它总是被破坏。
//修改
function TPDF.saveFile(): TResult;
var
file: TStringStream;
f: TFileStream;
len: integer;
bytes: TBytes;
begin
file := TStringStream.Create();
file.WriteString(response.Content);
//f := TFileStream.Create(fileName, fmCreate);
bytes := TEncoding.ANSI.GetBytes(response.Content); //i am tryied ANSI, UNICODE, UTF8
//f.ReadData(bytes, response.ContentLength);
//f.Position := 0;
//f.WriteData(bytes, response.ContentLength);
file.WriteData(bytes, response.ContentLength);
file.SaveToFile(fileName);
// TFile.WriteAllBytes(fileName, bytes);
// file.SaveToFile(fileName);
result := setResult(kbOK);
end;
答案 0 :(得分:1)
PDF不使用单一编码格式。您的服务器端代码必须将其作为二进制数据发送,以便String转换不会破坏它。此外,您的客户端必须将响应视为二进制数据。
答案 1 :(得分:0)
使用idHTTP
直接获取响应。
idHTTP.Get('http://example.com/thefile', myFileStream)