c# – 从外部域(AWS S3)加载映像并将其存储在浏览器内存中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从外部域(AWS S3)加载映像并将其存储在浏览器内存中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2280字,纯文字阅读大概需要4分钟。
内容图文
![c# – 从外部域(AWS S3)加载映像并将其存储在浏览器内存中](/upload/InfoBanner/zyjiaocheng/967/b52da71b95b84c268bcd496c81a0eb42.jpg)
我是ASP.net的新手,想知道从外部域(Amazon S3)加载照片是多么容易,使用他们的过期链接,并将照片存储在浏览器内存中,以便使用OpenBinary方法获取另一个脚本?这允许我在打印到屏幕之前调整大小并为其添加水印.
这就是我想要发生的事情:
在loadImage.aspx上,我从我的数据库中获取photoID,为Amazon S3创建一个过期的签名URL,以某种方式调用照片并将其保存到内存中.在内存中时,我的ASP.Jpeg脚本将调用OpenBinary方法,调整大小并为照片添加水印,并使用SendBinary方法显示照片.
我认为内存流或响应二进制写可能是我正在寻找的东西,但不知道如何在外部照片源上使用它.这是我到目前为止所管理但却感到困惑,并认为我会得到帮助,因为我不确定这是否会起作用,如果我可以在内存中加载外部域照片,如果我错过了一些重要的东西.. ..
我的图片元素:
<img src="loadImage.aspx?p=234dfsdfw5234234">
在loadImage.aspx上:
string AWS_filePath = "http://amazon............"
using (FileStream fileStream = File.OpenRead(AWS_filePath))
{
MemoryStream memStream = new MemoryStream();
memStream.SetLength(fileStream.Length);
fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length);
}
// Persits ASP.Jpeg Component
objJpeg.OpenBinary( ... );
// resize bits
// watermark bits
objJpeg.SendBinary( ... );
任何帮助都会很棒.
解决方法:
首先使用处理程序.ashx而不是完整的.aspx页面.处理程序没有aspx页面的所有调用,对于要发送的内容更清楚,并且避免所有现成的标头.
<img src="loadImage.ashx?p=234dfsdfw5234234">
如何下载图像.
string url = "http://amazon............"
byte[] imageData;
using (WebClient client = new WebClient()) {
imageData = client.DownloadData(url);
}
如何将图像发送到浏览器
// this is the start call from the handler
public void ProcessRequest(HttpContext context)
{
// imageData is the byte we have read from previous
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
}
如何设置缓存和标头
public void ProcessRequest(HttpContext context)
{
// this is a header that you can get when you read the image
context.Response.ContentType = "image/jpeg";
// the size of the image
context.Response.AddHeader("Content-Length", imageData.Length.ToString());
// cache the image - 24h example
context.Response.Cache.SetExpires(DateTime.Now.AddHours(24));
context.Response.Cache.SetMaxAge(new TimeSpan(24, 0, 0));
// render direct
context.Response.BufferOutput = false;
...
}
我希望这些技巧可以帮助您继续前进.
亲戚:
https://stackoverflow.com/search?q=%5Basp.net%5D+DownloadData
内容总结
以上是互联网集市为您收集整理的c# – 从外部域(AWS S3)加载映像并将其存储在浏览器内存中全部内容,希望文章能够帮你解决c# – 从外部域(AWS S3)加载映像并将其存储在浏览器内存中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。