1
我在运行时从屏幕截图生成一个JPEG,并希望将其上传到FTP服务器。但是当它上传时,它不再是有效的jpeg。Indy上传Memorystream到FTP
在这个例子中,我刚刚从HD加载一个位图:
首先是一些代码:
procedure TForm13.Button1Click(Sender: TObject);
var
InBitmap: TBitmap;
JpegImage: TJpegImage;
MemoryStream: TMemoryStream;
IdFTP: TIdFTP;
begin
InBitmap := TBitmap.Create;
MemoryStream := TMemoryStream.Create;
JpegImage := TJpegImage.Create;
IdFTP := TIdFTP.Create(self);
try
InBitmap.LoadFromFile('C:\aa\test.bmp');
JpegImage.Assign(InBitmap);
JpegImage.CompressionQuality := 65;
JpegImage.SaveToStream(MemoryStream);
with IdFTP do
try
Host := <HOST>;
Username := <USER>;
Password := <PASS>;
Port := 21;
Passive := True;
Connect;
MemoryStream.Position := 0;
Put(MemoryStream, 'test.jpg');
finally
Disconnect;
end;
finally
IdFTP.Free;
JpegImage.Free;
InBitmap.Free;
MemoryStream.Free;
end;
end;
我试图保存JPEG上传之前的文件,它是一个有效的JPG
我试图挽救MemortStream到一个文件在上传之前,这是一个有效的JPG
但是,当它被上传到FTP服务器时,它仅仅是一个空白JPG文件,但仍然“有效”。
它不是我的FTP服务器,而是由我的域名所有者拥有的服务器。这里是刚上传的jpg的链接:http://fluffykids.dk/test.jpg这里是我保存到光盘的jpeg:http://fluffykids.dk/aa.jpg。
问题:为什么上传后我失去了JPEG的“内容”?
而你是100%正确,那么它的工作原理:D –
不客气:o) –