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) –