如何在wcf中读取.mp3文件?
如何读取.mp3音频文件? 我编写了以下代码如何在wcf中读取.mp3文件?,wcf,Wcf,如何读取.mp3音频文件? 我编写了以下代码 public static byte[] ReadFully(Stream stream) { byte[] buffer = new byte[32768]; using (MemoryStream ms = new MemoryStream()) { while (true) {
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);
}
}
公共静态字节[]已就绪(流)
{
字节[]缓冲区=新字节[32768];
使用(MemoryStream ms=new MemoryStream())
{
while(true)
{
int read=stream.read(buffer,0,buffer.Length);
如果(阅读我使用以下代码从REST WCF服务下载mp3文件:
[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服务
服务器端方法:
[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.出于测试目的,我将字节数组大小硬编码为一个大值
要调用服务的客户端:
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服务。您是否确保在IIS中注册了相关的MIME类型?在IIS中注册了。有mp3 MIME类型,但它不接受该格式流。我编写了用于保存提供给mobile team的音频文件的服务。他们正在成功保存.3gp、.caf foramts音频.但是.mp3无法保存是什么原因?我使用相同的逻辑保存视频文件。但是他们无法保存视频文件。S Rajesh这是restful服务。