2010-05-24 9 views
8

J'ai une application SL3 qui doit être en mesure de transmettre une image au serveur, puis le serveur va générer un fichier PDF avec l'image et l'afficher à l'utilisateur.Le meilleur moyen de transmettre l'image au serveur?

Ce que j'ai déjà en place sont les suivantes:

(1) Code pour convertir l'image au tableau d'octets (2) code pour générer un fichier PDF avec l'image

Le principal problème que je courais en est la suivante:

afin de contourner le bloqueur de pop-up, ce qui est une exigence pour mon application, je suis en utilisant le code suivant:

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(); 

Au départ, je passais l'image à un service Web WCF (en tant que tableau d'octets), puis "naviguez" vers la page ASP.NET qui afficherait le rapport. Toutefois, si je le fais, je ne peux pas utiliser ma classe HyperlinkButton personnalisée, et certains navigateurs, y compris Safari, bloqueront l'ouverture d'une nouvelle fenêtre. Par conséquent, il semble que la seule option consiste à utiliser la classe HyperlinkButton. Ce que je dois pouvoir faire est de passer en quelque sorte l'image, comme un tableau d'octets ou un autre type de données, au serveur, de sorte qu'il peut temporairement stocker l'image, même si elle est dans une variable de serveur , puis récupérez-le immédiatement lorsque je navigue vers la page PrintReport.aspx. Si je télécharge l'image dans un formulaire ASP.NET et que j'utilise la classe HyperlinkButton pour accéder à la page PrintReport, cela ne fonctionne pas, car l'application accède à la page PrintReport avant que le système ait fini de télécharger l'image. . Je ne peux pas le passer à un service Web, car cela nécessiterait que j'accède à la page PrintReport.aspx dans le code de rappel de la méthode Web à laquelle je transmettrais l'image, et le HyperlinkButton ne le permet pas, en fonction sur les règles de sécurité.

Toute aide ou idée serait appréciée.

Merci.

Chris

Répondre

1

Est ressemble à votre problème est moins à voir avec le téléchargement d'images, et plus à voir avec l'aide un seul clic pour télécharger et accédez à la page du rapport est affiché sur, si tel est le Dans ce cas, le téléchargement de l'image sur la page des rapports peut être la solution.

Upload files with HTTPWebrequest (multipart/form-data)

montre comment télécharger une page standard ASPX

Quant à obtenir l'approche webservice de travail, je dirais que la pièce du puzzle vous manque ici est le mode de compatibilité WCF ASP.

Ceci vous permet d'accéder au httpcontext dans un service wcf. La capture est bien sûr que vous associez votre service à ASP ....

Jetez un oeil ici http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx pour plus de détails sur le mode de compatibilité ASP.

Votre processus devient alors:

Ajouter à Webservice -> Ajouter au cache

Accédez à la page -> retreive du cache

espoir de ces suggestions aide

sinon, reviens-moi!

+0

Votre compréhension est correcte. Si je télécharge vers un service Web, l'approche logique consisterait à naviguer vers la page qui affiche le rapport une fois le téléchargement des données d'image terminé. Vous ne pouvez pas utiliser la méthode de navigation HyperlinkButton à partir d'une méthode de rappel, etc ... Quelque chose à voir avec les mesures de sécurité dans Silverlight. Donc, je suis toujours bloqué en essayant de comprendre comment, en un clic, pour télécharger les données d'image ET en utilisant HyperlinkButton, ouvrez une nouvelle fenêtre et accédez à une autre page. – Chris

+0

K, je vais regarder dans l'espace de nommage AutomationPeers ... Cela vous permet de simuler l'action de l'utilisateur (encore une fois la sécurité peut signifier qu'il n'y a pas d'automationpeer pour le bouton lien hypertexte) ... Il semblerait que vous deviez faire quelque chose de fantaisie côté serveur, ne laissez pas la page de rapport de rendre jusqu'à ce que l'image est entièrement téléchargée ... Je suis au travail en ce moment et je n'ai pas d'env de Silverlight, mais quand je serai à la maison, je vais donner un coup de feu et laisser tu sais. – stevenrcfox

Questions connexes