ファイルアップロード Upload

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です