私は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);
}
UPDATE:RESTfulなWCFサービスにmp3ファイルをアップロード
サーバ側のメソッド:
を
[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.このフォルダに関連付けられているユーザーのmp3ファイルを書き込む権限があることを確認しますWCFサービスが実行されているアプリケーションプール 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;
}
はRestSharpと呼ばれる残りのサービスを呼び出すためのサードパーティ製のDLLを使用しています。
関連するMIMEタイプがIISに登録されていることを確認しましたか? – Rajesh
iis .mp3にあります。MIMEタイプはありますが、そのフォーマットストリームを受け入れていません。 – user1237131
私はモバイルチームに与えられたオーディオファイルを保存するためのサービスを書いています。彼らは.3gp、.caf foramtsを成功裏に保存していますaudio.but .mp3は保存できません。 – user1237131