RESTfulWCF服务图像上传问题1namespaceUploader2{3usingSystem;4使用System.IO;5使用系统服务模型;6使用System.ServiceModel.Description;7使用System.ServiceModel.Web;8使用系统绘图;9使用System.Drawing.Imaging;10使用System.Net;11使用System.Xml;1213[ServiceContract(Namespace="http://Uploader")]14公共接口IUploaderService15{16[OperationContract,WebInvoke(Method="POST",UriTemplate="File/{fileName}")]17boolUploadFile(string文件名,流文件内容);18}1920[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]21publicclassUploaderService:IUploaderService22{23publicboolUploadFile(stringfileName,StreamfileContents)24{25returntrue;26}27}2829类程序30{31staticvoidMain()32{33varhost=new34ServiceHost(typeof(UploaderService),35newUri("http://localhost:8080/Uploader"));36主机.AddServiceEndpoint("Uploader.IUploaderService",37newWebHttpBinding(),"").Behaviors.Add(newWebHttpBehavior());38尝试39{40host.Open();41Console.WriteLine(host.BaseAddresses[0].AbsoluteUri+"正在运行。");42控制台.WriteLine();43varuri="http://localhost:8080/Uploader/file.jpg";44varreq=WebRequest.Create(uri)作为HttpWebRequest;45if(req!=null)46{47req.Method="POST";48req.ContentType="图片/jpeg";49变种reqStream=req.GetRequestStream();5051varimageStream=newMemoryStream();52使用(vari=Image.FromFile(@"c:photo.jpg"))53i.Save(imageStream,ImageFormat.Jpeg);5455变种imageArray=imageStream.ToArray();56reqStream.Write(imageArray,0,imageArray.Length);57reqStream.关闭();58varresp=(HttpWebResponse)req.GetResponse();第59话60如果(r.Read())61{62Console.WriteLine(r.ReadString());63}64}65Console.WriteLine("按下退出。");66控制台.ReadLine();67}68catch(Exceptionex)69{70Console.WriteLine(ex.Message);71控制台.ReadKey();72}73最后74{75if(host.State==CommunicationState.Faulted)76host.Abort();77否则78host.Close();79}80}81}82}8384嗨,希望你能帮忙....我正在创建一个简单的应用程序(可能是一个网页),它将有一个简单的用户界面,并将从外部设备上传文件,当用户将设备插入PC,应用程序/网页将通过autorun.inf启动Web服务,这将完成将文件链接到管理系统等的复杂工作。这将使无法使用文件浏览的文盲IT用户能够提交文件到管理系统...!我遇到的问题是,当内容类型为image/jpeg时,我的RESTful服务器给我一个400错误。它适用于text/plain或text/xml(请参阅博客文章)谢谢J您可以尝试覆盖任何内容类型并使用IOperationBehavior将所有文件上传为application/octet-stream或text/plain。公共类WebContentTypeAttribute:属性,IOperationBehavior,IDispatchMessageFormatter{私有IDispatchMessageFormatterinnerFormatter;公共字符串ContentTypeOverride{得到;放;}publicWebContentTypeAttribute(stringcontentTypeOverride){this.ContentTypeOverride=contentTypeOverride;}//IOperationBehaviorpublicvoidValidate(OperationDescriptionoperationDescription){}publicvoidApplyDispatchBehavior(OperationDescriptionoperationDescription,DispatchOperationdispatchOperation){innerFormatter=dispatchOperation.Formatter;dispatchOperation.Formatter=this;}publicvoidApplyClientBehavior(OperationDescriptionoperationDescription,ClientOperationclientOperation){}publicvoidAddBindingParameters(OperationDescriptionoperationDescription,BindingParameterCollectionbindingParameters){}//IDispatchMessageFormatterpublicvoidDeserializeRequest(Messagemessage,object[]parameters){if(message==null)re转动;如果(string.IsNullOrEmpty(ContentTypeOverride))返回;varhttpRequest=(HttpRequestMessageProperty)message.Properties[HttpRequestMessageProperty.Name];httpRequest.Headers["Content-Type"]=ContentTypeOverride;[]parameters,objectresult){returninnerFormatter.SerializeReply(messageVersion,parameters,result);你必须修改你的服务合同看起来像这样[OperationContract]上传文件(字符串文件名,流文件内容);虽然,如果您从网页上传,数据不是以multipart/formdata格式发布的吗?以上就是C#学习教程:RESTfulWCF服务图片上传问题分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
