JumpKick.HttpLib — Upload de arquivos
Observações
O envio de arquivos é feito com Http.Post() + .Upload(), utilizando o formato multipart/form‑data para enviar arquivos locais;
Classe principal: NamedFileStream(nome do campo do formulário, nome do arquivo, tipo MIME, fluxo do arquivo)
O endereço de exemplo oficial
https://jthorne.co.uk/httplibnão serve para testes práticos. Utilize esse endereço alternativo para testes:https://httpbin.org/post
Construtor
new NamedFileStream(
string fieldName, // Chave do formulário que o backend recebe para o arquivo
string fileName, // Nome do arquivo enviado ao servidor
string contentType, // Tipo MIME do arquivo
Stream stream // Fluxo de leitura do arquivo File.OpenRead(caminho do arquivo)
)Code language: JavaScript (javascript)
Upload de um único arquivo
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("==== Upload de arquivo concluído com sucesso ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== Falha durante o upload ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
Monitoramento do progresso com onProgressChanged
Exibe a porcentagem de envio em tempo real
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($"Enviando arquivo: {percent:F2} %");
}
)
.OnSuccess(result =>
{
Console.WriteLine("\n==== Upload finalizado ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== Falha durante o upload ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
Upload de vários arquivos ao mesmo tempo
Adicione várias instâncias de NamedFileStream dentro do array
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("==== Upload de múltiplos arquivos bem‑sucedido ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== Falha durante o upload ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
Cenário de erro
Informe um caminho de arquivo inexistente para disparar uma exceção e testar o tratamento via 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:\arquivo_que_nao_existe.png") // Caminho inválido
)
})
.OnSuccess(result =>
{
Console.WriteLine("==== Upload de arquivo concluído com sucesso ====");
Console.WriteLine(result);
})
.OnFail(webexception =>
{
Console.WriteLine("==== Exceção capturada (arquivo não encontrado) ====");
Console.WriteLine(webexception.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
Upload de arquivos
Previous: Requisições POST