5.9K Star 11.7K Fork 4K

GVPdotNET China / Furion

 / 详情

HttpFile 可以支持stream吗?对于大文件一次性读入 byte[] 并不是好的选择

已完成
创建于  
2022-10-08 13:58

输入图片说明

评论 (10)

kenizhou 创建了任务

就不能好好发 Issue 吗?下次好好发,不过你这个需求非常合理,我下个版本实现。

已经实现,4219557 下个版本发布

以下是字符串拓展、代理方式的使用,包含 单文件,多文件

  1. 单文件上传
  • 字符串方式
var fileStream = new FileStream("image.png", FileMode.Open);

var result = await "https://localhost:44316/api/test-module/upload-file"
                    .SetContentType("multipart/form-data")
                    .SetFiles(HttpFile.Create("file", fileStream, "image.png")).PostAsync();

var fileName = await result.Content.ReadAsStringAsync();

await fileStream.DisposeAsync();
  • 代理方式
var fileStream = new FileStream("image.png", FileMode.Open);

var result = await _http.TestSingleFileProxyAsync(HttpFile.Create("file", fileStream, "image.png"));
var fileName = await result.Content.ReadAsStringAsync();

await fileStream.DisposeAsync();
  1. 多文件上传
  • 字符串方式
var fileStream = new FileStream("image.png", FileMode.Open);

var result = await "https://localhost:44316/api/test-module/upload-muliti-file"
                    .SetContentType("multipart/form-data")
                    .SetFiles(HttpFile.CreateMultiple("files", (fileStream, "image1.png"), (fileStream, "image2.png"))).PostAsync();
var fileName = await result.Content.ReadAsStringAsync();

await fileStream.DisposeAsync();
  • 代理方式
var fileStream = new FileStream("image.png", FileMode.Open);

var result = await _http.TestMultiFileProxyAsync(HttpFile.CreateMultiple("files", (fileStream, "image1.png"), (fileStream, "image2.png")));
var fileName = await result.Content.ReadAsStringAsync();

await fileStream.DisposeAsync();
  1. 还支持 BytesStream 混合
var fileStream = new FileStream("image.png", FileMode.Open);
var bytes = File.ReadAllBytes("image.png");

var httpFile = new HttpFile
{
    Name = name,
    Bytes = bytes,
    FileStream = fileStream,
    FileName = fileName
};

var result = await "https://localhost:44316/api/test-module/upload-file"
                    .SetContentType("multipart/form-data")
                    .SetFiles(httpFile).PostAsync();

var fileName = await result.Content.ReadAsStringAsync();

await fileStream.DisposeAsync();
百小僧 任务状态待办的 修改为已完成
百小僧 里程碑设置为v4.5.8

:+1: 这反映速度杠杠的!!

新增了两个重载:

输入图片说明

输入图片说明


也就是还是通过 HttpFile.CreateHttpFile.CreateMultiple 创建。


最晚明天早上发布(大概率今天发布)

百小僧 修改了标题

v4.5.8版本已经发布。

多谢!

想追问一个问题:
“IHttpDispatchProxy ” 方式如何在 “Worker Service”中使用?谢谢!
输入图片说明

在worker 构造函数中使用需要 Singleton scope:

输入图片说明

如果从serviceProvider get service 又不存在:
输入图片说明

有问题重新发帖,提供demo吧,下不为例。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
974299 monksoul 1578937227
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助