1 namespace Uploader
2 {
3 using System;
4 using System.IO;
5 using System.ServiceModel;
6 using System.ServiceModel.Description;
7 using System.ServiceModel.Web;
8 using System.Drawing;
9 using System.Drawing.Imaging;
10 using System.Net;
11 using System.Xml;
12
13 [ServiceContract(Namespace = "http://Uploader")]
14 public interface IUploaderService
15 {
16 [OperationContract, WebInvoke(Method = "POST",UriTemplate = "File/{fileName}")]
17 bool UploadFile(string fileName, Stream fileContents);
18 }
19
20 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
21 public class UploaderService : IUploaderService
22 {
23 public bool UploadFile(string fileName, Stream fileContents)
24 {
25 return true;
26 }
27 }
28
29 class Program
30 {
31 static void Main()
32 {
33 var host = new
34 ServiceHost(typeof (UploaderService),
35 new Uri("http://localhost:8080/Uploader"));
36 host.AddServiceEndpoint("Uploader.IUploaderService",
37 new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
38 try
39 {
40 host.Open();
41 Console.WriteLine(host.BaseAddresses[0].AbsoluteUri + " running.");
42 Console.WriteLine();
43 var uri = "http://localhost:8080/Uploader/file.jpg";
44 var req = WebRequest.Create(uri) as HttpWebRequest;
45 if (req != null)
46 {
47 req.Method = "POST";
48 req.ContentType = "image/jpeg";
49 var reqStream = req.GetRequestStream();
50
51 var imageStream = new MemoryStream();
52 using (var i = Image.FromFile(@"c:\photo.jpg"))
53 i.Save(imageStream, ImageFormat.Jpeg);
54
55 var imageArray = imageStream.ToArray();
56 reqStream.Write(imageArray, 0, imageArray.Length);
57 reqStream.Close();
58 var resp = (HttpWebResponse)req.GetResponse();
59 var r = new XmlTextReader(resp.GetResponseStream());
60 if (r.Read())
61 {
62 Console.WriteLine(r.ReadString());
63 }
64 }
65 Console.WriteLine("Press <ENTER> to quit.");
66 Console.ReadLine();
67 }
68 catch (Exception ex)
69 {
70 Console.WriteLine(ex.Message);
71 Console.ReadKey();
72 }
73 finally
74 {
75 if (host.State == CommunicationState.Faulted)
76 host.Abort();
77 else
78 host.Close();
79 }
80 }
81 }
82 }
83
84
Ciao, spero che tu possa aiutare ....WCF RESTful problema di caricamento delle immagini servizio
sto creando una semplice applicazione (forse pagina web) che avrà una semplice interfaccia utente e si caricare i file da un dispositivo esterno , l'app/pagina web verrà avviata tramite autorun.inf quando l'utente inserisce un dispositivo nel PC. Il webservice eseguirà il complesso lavoro di collegamento del file al sistema di gestione, ecc. Ciò consentirà agli utenti analfabeti IT che non possono utilizzare il file explore per inviare file al sistema di gestione ...!
Il problema che ho è che il mio serivce RESTful mi sta dando un errore 400 quando il tipo di contenuto è un image/jpeg .. Funziona bene per il text/plain o text/xml (vedi Post)
Grazie J
Proprio quello che stavo cercando! Non sono ancora sicuro del caricamento della pagina web, tuttavia potrei usare JavaScript per collegarmi al servizio, quindi dovrò anche fare una versione abilitata per JSON. Attraversa quel ponte quando/se lo raggiungo. L'app è un piccolo prototipo al mo. – jaimie
Mi piace davvero questo WCF RESTful, sembra molto più pulito e sottile rispetto agli standard standard SOAP WS- * per l'interoperabilità. C'è un grande white paper su msdn: http://msdn.microsoft.com/en-us/library/dd203052.aspx per chiunque voglia saperne di più. Grazie per il tuo aiuto Ben ... J – jaimie