JumpKick.HttpLib — 文件上传 Upload
说明
文件上传基于 Http.Post() + .Upload(),采用 multipart/form-data 格式上传本地文件;
核心类:NamedFileStream(表单字段名, 文件名, MIME类型, 文件流)
官方示例地址
https://jthorne.co.uk/httplib无法用于实际测试,替换测试地址:https://httpbin.org/post
构造
new NamedFileStream(
string fieldName, // 后端接收文件的表单key
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)
Previous: POST 请求
Next: 文件下载 DownloadTo