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

时间:2010-05-24 12:46:39

标签: 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();

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

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

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

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

感谢。

克里斯

1 个答案:

答案 0 :(得分:1)

听起来您的问题与图片上传的关系不大,而且更多与使用相关 只需单击一次即可上传并导航到显示报告的页面,如果是这种情况,则可以在报告页面上处理图像上传。

Upload files with HTTPWebrequest (multipart/form-data)

显示了如何上传到标准的aspx页面

至于使web服务方法有效,我会说你在这里缺少的拼图是WCF ASP兼容模式。

这使您可以访问wcf服务中的httpcontext。当然,问题在于您将服务与ASP相结合....

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

然后您的流程变为:

上传到网络服务 - >添加到缓存

导航到页面 - >从缓存中恢复

希望其中一条建议有所帮助

如果没有,请回复我!