将图像传递给服务器的最佳方法?

Chr*_*ris 8 c# asp.net silverlight silverlight-3.0

我有一个SL3应用程序,需要能够将图像传递给服务器,然后服务器将生成一个包含图像的PDF文件,并将其显示给用户.

我已经拥有的是以下内容:

(1)将图像转换为字节数组的代码(2)生成带图像的PDF文件的代码

我遇到的主要问题如下:

为了绕过弹出窗口阻止程序,这是我的应用程序的要求,我使用以下代码:

var button = new NavigationButton();

button.NavigateUri = new Uri("http://localhost:3616/PrintReport.aspx?ReportIndex=11&ActionType=Get&ReportIdentifier=" + reportIdentifier.ToString() + "");

button.TargetName = "_blank";

button.PerformClick();
Run Code Online (Sandbox Code Playgroud)

最初,我将图像传递给WCF Web服务(作为字节数组),然后"导航"到将显示报告的ASP.NET页面.但是,如果我这样做,那么我就无法使用我的自定义HyperlinkBut​​ton类,并且某些浏览器(包括Safari)将阻止打开一个新窗口.因此,似乎唯一的选择是使用HyperlinkBut​​ton类.

我需要做的是以某种方式将图像作为字节数组或其他一些数据类型传递给服务器,这样它就可以临时存储图像,即使它是在服务器变量中,然后立即当我导航到PrintReport.aspx页面时检索它.

如果我将图像上传到ASP.NET表单,然后使用HyperlinkBut​​ton类导航到PrintReport页面,它就不起作用,因为应用程序在系统上传完图像之前导航到PrintReport页面.我不能将它传递给Web服务,因为这将要求我导航到我将传递图像的Web方法的回调代码中的PrintReport.aspx页面,并且HyperlinkBut​​ton将不允许这样做,关于安全规则.

任何帮助或想法将不胜感激.

谢谢.

克里斯

ste*_*fox 1

听起来您的问题与图像上传无关,而更多地与仅使用一键上传并导航到报告显示的页面有关,如果是这种情况,则在报告上处理图像上传页面本身可能就是正确的选择。

使用 HTTPWebrequest 上传文件(multipart/form-data)

展示如何上传到标准 aspx 页面

至于让 Web 服务方法发挥作用,我想说您在这里缺少的一块拼图是 WCF ASP 兼容性模式。

这使您能够访问 wcf 服务中的 httpcontext。当然,问题在于您要将服务与 ASP 耦合......

有关 ASP 兼容模式的更多详细信息,请查看此处http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx 。

然后你的流程就变成了:

上传到Web服务->添加到缓存

导航到页面 -> 从缓存中检索

希望这些建议之一有帮助

如果没有,请回到我身边!