[.NET C#] passare bytearray in post a una pagina aspx

martedì 20 marzo 2012 - 15.23
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010  |  SQL Server 2008 R2

dofoo Profilo | Newbie

Ciao a tutti, questo è il mio primo post!
Sono un newbie sia di C# che del framework, e ho bisogno una mano su un problema che riscontro.
Ho un'applicazione AIR in Flash che manda in POST un bytearray.
Devo ricevere questo bytearray e salvare l'immagine sul server, la parte di salvataggio non è importante, lo è la ricezione in POST e la conversione dei dati per ottenere un'immagine.
questo il codice che utilizzo:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Drawing; using System.IO; using System.Collections; using System.Collections.Specialized; using System.Text; using System.Net; public partial class post : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Image returnImage = FromBase64String(Request.Form["byte"]); } internal static Image FromBase64String(string imageData) { return FromBytes(Convert.FromBase64String(imageData)); } internal static Image FromBytes(byte[] ImageData) { if (ImageData != null && ImageData.Length > 0) { using (MemoryStream stm = new MemoryStream(ImageData)) { return Image.FromStream(stm); } } return null; } }

Vorrei sapere se ci sono errori fino a qui, non ho incluso la parte di salvataggio sul server (non so neppure se ho i permessi di scrittura in una cartella). Quello che mi serve sapere è se è corretto il codice che ho postato, in particolare l'istruzione
Request.Form["byte"]
dove byte è il bytearray
Grazie per l'attenzione!

Gluck74 Profilo | Guru

ciao,
il codice mi sembra giusto (non l'ho provato), in teoria la procedura è proprio questa.

Per quanto riguarda i dati in post, dovresti vedere come si chiama la key dei dati inviati da flash.
se non hai accesso al codice del flash, allora metti un breakpoin nel pageload e controlla l'intera request.form.
vedi un array con diverse coppie key/value, controlla come si chiama quella inviata dal flash.

P.S.: fai solo un controllo che request.form["..."] esista prima di darlo in pasto alla funzione

ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

dofoo Profilo | Newbie

Ciao,
c'è qualcosa che non va.
Se commento
//Image returnImage = FromBase64String(Request.Form["byte"]);
e scrivo
String temp = Request.Form["byte"];
non ho errori al send di flash.
Evidentemente la stringa arriva correttamente ma il problema è nella conversione in immagine del bytearray..
Idee?

Gluck74 Profilo | Guru

potresti specificare se hai errore e quale errore hai?


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

dofoo Profilo | Newbie

Ciao, grazie per l'attenzione.
Ho risolto ma mi resta un dubbio.
Tentavo di inviare da flash a c# un bytearray in post SENZA CONVERTIRLO in base64.
Ora, visto che vorrei evitare carichi di lavoro inutili sulla cpu (è un'app per iPad), come posso ricevere direttamente un bytearray anzichè una stringa? Request.Form["byte"] si aspetta una stringa, non un bytearray.. non so come si fa..

Gluck74 Profilo | Guru

credo che quello che stai facendo sia la cosa giusta. passalo pure così come ora

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5