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
Cześć, nadzieję, że może pomóc ....relaksującego WCF usługa przesyłania obrazu Problem
tworzę prostą aplikację (być może) strony internetowej, która będzie miała prosty interfejs użytkownika i przesyłać pliki z urządzenia zewnętrznego , aplikacja/strona internetowa zostanie uruchomiona za pośrednictwem autorun.inf, gdy użytkownik podłączy urządzenie do komputera. Serwis internetowy wykona złożone zadanie połączenia pliku z systemem zarządzania itd. Umożliwi to niepiśmiennych użytkowników IT, którzy nie mogą korzystać z eksploracji plików w celu przesyłania plików do systemu zarządzania ...!
Mam problem jest, że moje relaksującego serivce daje mi błąd 400, gdy typ zawartość jest image/jpeg .. To działa dobrze dla text/plain lub text/xml (patrz blogu)
Dzięki J
Właśnie o to mi chodziło! Not sure about the upload strony jeszcze, jednak mogę używać JavaScript do podłączenia do usługi, więc będę musiał zrobić wersję obsługującą JSON. Przejdź przez ten most, gdy/jeśli do niego dojdę. Aplikacja jest małym prototypem w mg. – jaimie
Naprawdę podoba mi się to RESTful WCF, wydaje się o wiele czystsze i cieńsze niż standardowe standardy SOAP WS- * dla interoperacyjności. Na stronie msdn znajduje się świetna biała publikacja: http://msdn.microsoft.com/en-us/library/dd203052.aspx dla każdego, kto chce wiedzieć więcej. Dzięki za pomoc Ben ... J – jaimie