RESTful WCF service image-upload-problem

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   

Hallo, hoffe Ihr könnt helfen....

Ich bin der Erstellung einer einfachen app(vielleicht Webseite), die haben eine einfache Benutzeroberfläche und upload von Dateien von einem externen Gerät, die app/Internetseite wird über autorun gestartet.inf wenn der Benutzer den Stecker ein Gerät dort in den PC. Der webservice wird die komplexe Aufgabe der Verlinkung der Datei in das management-system etc. Dies ermöglicht den IT-Analphabeten Benutzer, die nicht verwenden können, Datei-Explorer, um Dateien senden zu der das management-system...!

Das problem ist, dass ich meine RESTful-Service ist, dass Sie mir einen 400-Fehler, wenn der content-type ist image/jpeg..
Es funktioniert gut für text/plain oder text/xml (siehe Blog-Post)

Dank
J

InformationsquelleAutor jaimie | 2009-03-20
Schreibe einen Kommentar