C#.NET を使用して Soundcloud.com にオーディオ トラックをアップロードしようとしていますが、.NET のリソースがどこにもありません。.NET を使用して私の Soundcloud.com アカウントにオーディオ ファイルをアップロードする方法のリンクまたは例を誰かが投稿できますか?
ありがとう、アルマン
C#.NET を使用して Soundcloud.com にオーディオ トラックをアップロードしようとしていますが、.NET のリソースがどこにもありません。.NET を使用して私の Soundcloud.com アカウントにオーディオ ファイルをアップロードする方法のリンクまたは例を誰かが投稿できますか?
ありがとう、アルマン
soundcloud の REST API を使用してオーディオをアップロードするには、HTTP POST 関連の問題 (RFC 1867) に対処する必要があります。一般に、ASP.NET は POST を使用した複数のファイル/値の送信をサポートしていないため、Krystalware ライブラリを使用することをお勧めします: http://aspnetupload.com/Upload-File-POST-HttpWebRequest-WebClient-RFC-1867.aspx
その後、適切なフォーム フィールドをhttps://api.soundcloud.com/tracks URLに送信する必要があります。
サンプルコード:
using Krystalware.UploadHelper;
...
System.Net.ServicePointManager.Expect100Continue = false;
var request = WebRequest.Create("https://api.soundcloud.com/tracks") as HttpWebRequest;
//some default headers
request.Accept = "*/*";
request.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.Headers.Add("Accept-Language", "en-US,en;q=0.8,ru;q=0.6");
//file array
var files = new UploadFile[] {
new UploadFile(Server.MapPath("Downloads//0.mp3"), "track[asset_data]", "application/octet-stream")
};
//other form data
var form = new NameValueCollection();
form.Add("track[title]", "Some title");
form.Add("track[sharing]", "private");
form.Add("oauth_token", this.Token);
form.Add("format", "json");
form.Add("Filename", "0.mp3");
form.Add("Upload", "Submit Query");
try
{
using (var response = HttpUploadHelper.Upload(request, files, form))
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
lblInfo.Text = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
lblInfo.Text = ex.ToString();
}
サンプル コードを使用すると、サーバーからオーディオ ファイルをアップロードし (ファイルへのパスを形成する Server.MapPath メソッドに注意してください)、json 形式で応答を取得できます (reader.ReadToEnd)。
これは、SoundCloud API 経由でトラックをアップロードするためのコード スニペットです =>
using (HttpClient httpClient = new HttpClient()) {
httpClient.DefaultRequestHeaders.ConnectionClose = true;
httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MySoundCloudClient", "1.0"));
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", "MY_AUTH_TOKEN");
ByteArrayContent titleContent = new ByteArrayContent(Encoding.UTF8.GetBytes("my title"));
ByteArrayContent sharingContent = new ByteArrayContent(Encoding.UTF8.GetBytes("private"));
ByteArrayContent byteArrayContent = new ByteArrayContent(File.ReadAllBytes("MYFILENAME"));
byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(titleContent, "track[title]");
content.Add(sharingContent, "track[sharing]");
content.Add(byteArrayContent, "track[asset_data]", "MYFILENAME");
HttpResponseMessage message = await httpClient.PostAsync(new Uri("https://api.soundcloud.com/tracks"), content);
if (message.IsSuccessStatusCode) {
...
}