首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在wcf中读取.mp3文件?

如何在wcf中读取.mp3文件?
EN

Stack Overflow用户
提问于 2012-03-05 17:30:40
回答 1查看 970关注 0票数 2

如何读取.mp3音频文件?我写了下面的代码。

代码语言:javascript
运行
复制
public static byte[] ReadFully(Stream stream)
        {
            byte[] buffer = new byte[32768];
            using (MemoryStream ms = new MemoryStream())
            {
                while (true)
                {
                    int read = stream.Read(buffer, 0, buffer.Length);
                    if (read <= 0)
                        return ms.ToArray();
                    ms.Write(buffer, 0, read);
                }
            }

它接受.3gp,.caf foramat streams .why它不接受.mp3文件?}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-05 21:41:56

我使用以下代码从REST WCF服务下载了一个mp3文件:

代码语言:javascript
运行
复制
        [WebGet]
        public Stream GetMp3()
        {
            byte[] buffer;
            WebOperationContext.Current.OutgoingResponse.ContentType = "audio/mp3";            
            using (FileStream ms = new FileStream(@"C:\Sample.mp3", FileMode.Open))
            {
                int length = (int)ms.Length;
                WebOperationContext.Current.OutgoingResponse.ContentLength = length;
                buffer = new byte[length];
                int sum = 0;
                int count;
                while ((count = ms.Read(buffer, sum, length - sum)) > 0)
                {
                    sum += count;
                }
                ms.Close();
            }
            return new MemoryStream(buffer);
        }

更新:上传mp3文件到Restful WCF服务

服务器端方法:

代码语言:javascript
运行
复制
        [WebInvoke]
        public string RecieveMp3(Stream mp3Stream)
        {
            byte[] buffer = new byte[5000000];
            using (FileStream ms = new FileStream("C:\\Temp\\Test1.mp3", FileMode.OpenOrCreate))
            {                
                int read = mp3Stream.Read(buffer, 0, buffer.Length);
                ms.Write(buffer, 0, read);                
            }
            return "Recieved Mp3 file";
        }

注意: 1.确保你在文件夹上有权限为与运行wcf服务的应用程序池相关联的用户写入mp3文件。2.为了测试目的,我将字节数组大小硬编码为一个较大的值。

调用服务的客户端:

代码语言:javascript
运行
复制
        private string UseRestSharpApproachForFiles(string serviceBaseUrl, string resourceUrl, Method method, string filepath)
        {
            var client = new RestClient();
            client.BaseUrl = serviceBaseUrl;            
            var request = new RestRequest(method) { DateFormat = DataFormat.Xml.ToString(), Resource = resourceUrl };
            request.AddFile("stream", filepath);
            var response = client.Execute(request);
            string responseString;
            if (response.StatusCode == HttpStatusCode.OK)
            {
                responseString = HttpUtility.HtmlDecode(response.Content);
            }
            else
            {
                responseString = response.StatusDescription + " --------------------" + HttpUtility.HtmlDecode(response.Content);
            }
            return responseString;
        }

我使用第三方dll来调用名为RestSharp的rest服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9564320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档