首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi / C++ Builder REST WebBroker中下载适用于浏览器的jpeg图像?

如何在Delphi / C++ Builder REST WebBroker中下载适用于浏览器的jpeg图像?
EN

Stack Overflow用户
提问于 2016-02-27 07:33:44
回答 2查看 460关注 0票数 1

我必须开发一个REST方法来为RAD Studio XE7中的浏览器返回jpeg文件。调用该方法时,浏览器告诉无法显示图像,因为它包含错误;我不明白为什么。

以下是方法的代码:

代码语言:javascript
复制
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;
}

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2016-02-27 15:58:12

不要对图像文件进行MIME编码。服务器应将JPG资源原封不动地写入HTTP响应。

试试这个:

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-28 02:48:52

多亏了mjn,我解决了这个问题。下面的代码运行良好。希望它能对其他人有用:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35663665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档