2010-11-30 3 views
1

J'ai une application qui permet aux utilisateurs de télécharger des vidéos sur le serveur et une partie du processus consiste à créer une image miniature sur le client qui sera utilisé pour la vidéo lorsqu'elle est chargée sur le serveur. J'ai un writeablebitmap que je veux convertir en jpeg et télécharger sur le serveur.Chargement d'un fichier JPEG créé à partir d'un WriteableBitmap sans le sauvegarder sur l'ordinateur des utilisateurs

Est-il possible de le faire sans enregistrer le jpeg sur l'ordinateur de l'utilisateur en premier - je ne veux pas avoir besoin d'une application de confiance. Est-il possible de le stocker d'abord dans un stockage isolé, puis de le télécharger à partir de là comme s'il s'agissait d'un autre fichier sur l'ordinateur de l'utilisateur?

grâce Michael

Répondre

1

J'ai implémenté une solution qui me permet de prendre un WriteableBitmap, de le convertir en JPEG en utilisant FJCore et de l'écrire dans un MemoryStream et de l'envoyer au serveur.

FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, quality, stream); 

voir: Using FJCore to encode Silverlight WriteableBitmap

Je trouve une grande classe FileUploader que je modifié pour télécharger un MemoryStream évitant d'avoir à créer un fichier local d'abord.

Orig:

public void StartUpload(FileInfo file) 

modified:

public void StartUpload(Stream fileStream) 

voir: http://www.codeproject.com/KB/silverlight/SL4FileUploadAnd_SL4_MVVM.aspx

Sur le serveur je le FileUpload.ashx décrit dans le lien ci-dessus pour accepter les morceaux du flux et écrivez-les dans un fichier sur le serveur.

Appel de FileUpload.ashx à l'aide d'une requête HttpWebRequest, le MemoryStream est envoyé par blocs jusqu'à la fin du flux.

Lorsque les octets sont reçus sur le serveur, ils sont écrits dans un fichier à un emplacement spécifié.

  • Michael
2

Vous devez enregistrer le fichier avant de le télécharger, mais il est certainement possible de l'enregistrer sur stockage isolé plutôt que le système de fichiers général. Il y a un Quickstart on Isolated Storage Microsoft qui écrit une image.

Le nom d'une image et le fichier image lui-même sont enregistrés dans un stockage isolé. Le nom de l'image est enregistré dans un paramètre nommé userSettings avec une clé de userImage. La sauvegarde du nom de l'image n'est pas nécessaire, mais elle est enregistrée pour plus de commodité. Le fichier image est enregistré dans un répertoire nommé Images et s'appelle UserImageFile.jpg. La méthode OpenFile; Ouvre un fichier sur un chemin spécifié à l'aide des options de partage et d'accès spécifiées. Cette méthode renvoie un objet IsolatedStorageFileStream qui contient le flux du fichier.

Vous pouvez télécharger du code qui devrait vous aider à démarrer.

Questions connexes