JumpKick.HttpLib ― ファイルアップロード Upload
説明
ファイルアップロードは Http.Post() と .Upload() を組み合わせ、multipart/form‑data 形式でローカルファイルを送信します。
コアクラス:NamedFileStream(フォームフィールド名, ファイル名, MIMEタイプ, ファイルストリーム)
公式サンプルのURL
https://jthorne.co.uk/httplibは実際の動作確認に使えません。代替先:https://httpbin.org/post
コンストラクタ
new NamedFileStream(
string fieldName, // サーバー側が受け取るフォームキー
string fileName, // サーバーへ送信するファイル名
string contentType, // ファイルのMIMEタイプ
Stream stream // ファイル読み込みストリーム File.OpenRead(ファイルパス)
)Code language: JavaScript (javascript)
単一ファイルアップロード
using System;
using System.IO;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
Http.Post("https://httpbin.org/post")
.Upload(files: new[]
{
new NamedFileStream(
"myfile",
"photo.png",
"image/png",
File.OpenRead(@"C:\Users\Jack\Pictures\clipboard.png")
)
})
.OnSuccess(result =>
{
Console.WriteLine("==== アップロード成功 ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== アップロードエラー ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
進捗取得 onProgressChanged
アップロード進捗をパーセントでリアルタイム出力
using System;
using System.IO;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
Http.Post("https://httpbin.org/post")
.Upload(
files: new[]
{
new NamedFileStream(
"myfile",
"photo.png",
"image/png",
File.OpenRead(@"C:\Users\86186\Pictures\clipboard.png")
)
},
onProgressChanged: (bytesSent, totalBytes) =>
{
double percent = (double)bytesSent / totalBytes * 100;
Console.WriteLine($"アップロード中:{percent:F2} %");
}
)
.OnSuccess(result =>
{
Console.WriteLine("\n==== アップロード完了 ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== アップロードエラー ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
複数ファイル同時アップロード
配列の中に NamedFileStream インスタンスを複数追加します
using System;
using System.IO;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
Http.Post("https://httpbin.org/post")
.Upload(files: new[]
{
new NamedFileStream("file1", "1.png", "image/png", File.OpenRead(@"D:\1.png")),
new NamedFileStream("file2", "2.jpg", "image/jpeg", File.OpenRead(@"D:\2.jpg"))
})
.OnSuccess(result =>
{
Console.WriteLine("==== 複数ファイルアップロード成功 ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== アップロードエラー ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
エラー時の動作
存在しないファイルパスを指定して例外を発生させ、OnFail による補足を確認
using System;
using System.IO;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
Http.Post("https://httpbin.org/post")
.Upload(files: new[]
{
new NamedFileStream(
"myfile",
"notfound.png",
"image/png",
File.OpenRead(@"D:\存在しないファイル.png") // 間違ったファイルパス
)
})
.OnSuccess(result =>
{
Console.WriteLine("==== アップロード成功 ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== 例外補足(ファイルが見つからない) ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
ファイルアップロード Upload
Previous: POSTリクエスト
Next: ファイルダウンロード DownloadTo