我必须开发一个REST方法来为RAD Studio XE7中的浏览器返回jpeg文件。调用该方法时,浏览器告诉无法显示图像,因为它包含错误;我不明白为什么。
以下是方法的代码:
void TCommerMethods::DownloadImage()
{
UnicodeString Ret;
TMemoryStream *Stream;
TIdEncoderMIME *MIMEEncoder;
Stream = new TMemoryStream;
Stream->LoadFromFile("C:\\Temp\\MyImage.jpg");
Stream->Position = 0;
MIMEEncoder = new TIdEncoderMIME(NULL);
Ret = MIMEEncoder->EncodeStream(Stream, Stream->Size);
delete Stream;
delete MIMEEncoder;
GetInvocationMetadata()->ResponseContentType = "image/jpeg";
GetInvocationMetadata()->ResponseContent = Ret;
}我做错了什么?
发布于 2016-02-27 15:58:12
不要对图像文件进行MIME编码。服务器应将JPG资源原封不动地写入HTTP响应。
试试这个:
void TCommerMethods::DownloadImage()
{
TStringStream *Stream;
String S;
Stream = new TStringStream;
Stream->LoadFromFile("C:\\Temp\\MyImage.jpg");
S = Stream->DataString;
delete Stream;
GetInvocationMetadata()->ResponseContentType = "image/jpeg";
GetInvocationMetadata()->ResponseContent = S;
}发布于 2016-02-28 02:48:52
多亏了mjn,我解决了这个问题。下面的代码运行良好。希望它能对其他人有用:
void TCommerMethods::DownloadImage()
{
TStringStream *Stream;
String S;
Stream = new TStringStream;
Stream->LoadFromFile("C:\\Temp\\MyImage.jpg");
S = Stream->DataString;
delete Stream;
GetInvocationMetadata()->ResponseContentType = "image/jpeg";
GetInvocationMetadata()->ResponseContent = S;
}https://stackoverflow.com/questions/35663665
复制相似问题