如何将zip文件发送到ASP.NETWebApi我想知道如何将zip文件发送到WebApi控制器,反之亦然。问题是我的WebApi使用json传输数据。Zip文件不可序列化,也可以是流。字符串可以序列化。但是必须有另一种解决方案,而不是将zip转换为字符串而不是发送字符串。这听起来不对。如果您的API方法需要HttpRequestMessage,那么您可以从中提取流://对流做一些事情,然后返回一些东西}privatestaticStreamGetStreamFromUploadedFile(HttpRequestMessagerequest){//以通常的方式等待这些任务由于某种原因导致线程死锁。//所以现在我们正在调用一个任务并显式地创建一个新线程。//请参阅此处:http://stackoverflow.com/q/15201255/328193IEnumerableparts=null;Task.Factory.StartNew(()=>parts=request.Content.ReadAsMultipartAsync().Result.Contents,CancellationToken.None,TaskCreationOptions.LongRunning,TaskScheduler.Default).Wait();流流=空;Task.Factory.StartNew(()=>stream=parts.First().ReadAsStreamAsync().Result,CancellationToken.None,TaskCreationOptions.LongRunning,TaskScheduler.Default).Wait();返回流;}当使用enctype="multipart/form-data"这对我有用,当我发布带有enctype="multipart/form-data"的HTTP表单时尝试在GET中使用带有StreamContent的简单HttpResponseMessage,下载文件publicHttpResponseMessageGet(){varpath=@"C:Tempfile.zip";varresult=newHttpResponseMessage(HttpStatusCode.OK);varstream=newFileStream(path,FileMode.Open);结果.Content=newStreamContent(stream);result.Content.Headers.ContentType=newMediaTypeHeaderValue("application/octet-stream");result.Content.Headers.ContentDisposition=newContentDispositionHeaderValue("attachment"){FileName="file.zip"};返回结果;}并且是POST,上传文件以上就是C#学习教程:HowtosendzipfilestoASP.NETWebApi分享的全部内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注吧—publicTaskPost(){HttpRequestMessagerequest=this.Request;如果(!request.Content.IsMimeMultipartContent()){thrownewHttpResponseException(HttpStatusCode.UnsupportedMediaType);}varprovider=newMultipartFormDataStreamProvider("C:Temp");vartask=request.Content.ReadAsMultipartAsync(provider).ContinueWith(o=>{stringfile1=provider.BodyPartFileNames.First().Value;//这是保存文件的服务器上的文件名returnnewHttpResponseMessage(){Content=newStringContent("Fileuploaded.")};});回归任务;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
