2010-07-25 4 views
1

Je veux écrire un programme par Visual Studio 2008 (C# et ASP) qui a une application web et une application Windows. Je veux obtenir des images des clients dans l'application web (télécharger) et les stocker dans DB (mysql) puis envoyer ces images à l'application Windows via le service web (donc je nouveau service web, pas le site web). Mais j'ai 2 problèmes:envoyer une image via le service web

  1. J'ai 2 façons de stocker des images dans une base MySQL, d'abord je devrais avoir champ BLOB dans DB -Que il faut plus spatioportée, deuxième que je devrais juste l'enregistrement du nom de chaque image dans DB (donc avoir l'image dans un dossier) -De cette façon, je ne sais pas comment obtenir l'image des clients et les stocker dans ce dossier-. laquelle? Ou quoi d'autre? Comment (code) puis-je transférer une image via le service Web (Byte [] ou?).

Répondre

5

L'une des options pour transférer l'image à l'aide de WCF est de convertir l'image en tableau d'octets et de la transmettre au client. Convertissez ensuite de byte [] en image du côté client.

1

Question 1:

Les images ou les liens dans DB debase est vieux et toujours pas résolu. Il y avait un microsoft white paper qui est sorti qui a recommandé (pour SQL Server 2008, donc votre kilométrage peut varier) que pour les images/binaires sous 150k de stockage DB est un bon compromis. Si la plupart des images sont terminées, rendez-vous avec des liens, si sous, stocker dans la base de données.

Question 2:

Le webservice aura un objet de contexte http, vous pouvez simplement utiliser la méthode Response.BinaryWrite, qui prend un byte[]. Vous devrez toujours écrire les en-têtes corrects (pour le type mime, etc.).

Pour un fichier sur le disque, la chose la plus simple à faire est d'utiliser la méthode Response.WriteFile qui prend un argument de chemin de fichier. Dans les deux cas, vous devrez l'intercepter sur le client et le reconvertir en une image.

Questions connexes