首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ByteArray到IFormFile

ByteArray到IFormFile
EN

Stack Overflow用户
提问于 2019-10-14 14:05:15
回答 3查看 12.9K关注 0票数 6

我正在用C#和Net Core开发一些REST API

我的存储库中有一个函数,它接受IFormFile类型的参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public async Task<bool> UploadFile(IFormFile file)
{
    // do some stuff and save the file to azure storage
}

此函数由一个控制器方法调用,该方法将上载的文件传递给它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FileController : Controller
{
    public async Task<IActionResult> UploadDoc(IFormFile file
    {
        // Call the repository function to save the file on azure
        var res = await documentRepository.UploadFile(file);
    }
}

现在,我有了另一个调用外部API的函数,该API以字节数组的形式返回文件。我想使用repository.UploadFile方法保存这个字节数组,但是我不能将字节数组对象强制转换为IFormFile

有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-14 14:59:08

您的存储库不应该使用IFormFile。这是一种抽象,只适用于HTTP文件传输的一种特定方法(即multipart/form-data编码的请求主体)。像你的repo这样的东西应该不知道文件的来源(超文本传输协议),也不知道它是如何传输的(例如multipart/form-data vs application/json )。

相反,您应该为您的参数使用Stream。然后,在您的UploadDoc操作中,您可以简单地执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using (var stream = file.OpenReadStream())
{
    await documentRepository.UploadFile(stream);
}

而且,如果你只有一个字节数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using (var stream = new MemoryStream(byteArray))
{
    await documentRepository.UploadFile(stream);
}

您还可以考虑添加一个采用byte[]UploadFile重载,因为仅仅为了拥有一个流而从一个字节数组创建一个新的内存流是一种资源浪费。但是,byte[]的处理方式必须与Stream不同,因此它可能需要一些重复的逻辑才能走这条路。您将需要评估权衡。

票数 6
EN

Stack Overflow用户

发布于 2019-10-14 14:11:12

可以将字节数组转换为MemoryStream

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var stream = new MemoryStream(byteArray);

然后,..and将其传递给FromFile类的constructor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IFormFile file = new FormFile(stream, 0, byteArray.Length, "name", "fileName");
票数 23
EN

Stack Overflow用户

发布于 2021-06-06 12:04:58

  1. 基于字节数组创建新的MemoryStream。
  2. 基于MemoryStream.
  3. Make创建新的FormFile对象。请务必附加ContentDisposition标头,否则您将无法操作FormFile对象,因为将引发C#异常。

完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        using (var stream = new MemoryStream(byteArray))
        {
            var file = new FormFile(stream, 0, byteArray.Length, name, fileName)
            {
                Headers = new HeaderDictionary(),
                ContentType = contentType,
            };

            System.Net.Mime.ContentDisposition cd = new System.Net.Mime.ContentDisposition
            {
                FileName = file.FileName
            };
            file.ContentDisposition = cd.ToString();
        }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58378491

复制
相关文章
45.python bytearray函数
python除了 bytes字节序列 之外,还有bytearray可变的字节序列,具体区别在哪呢?顾名思义,前者是不可变的,而后者是可变的!具体本文会有详细的讲解!
猿说编程[Python和C]
2020/03/12
1K0
编码和Python的bytearray
GBK UTF-8  是 字符集  编码方法   ===》 Apache  nginx
py3study
2020/01/07
3760
str、bytes和bytearray编码
str是字符数据,bytes和bytearray是字节数据。它们都是序列,可以进行迭代遍历。str和bytes是不可变序列,bytearray是可变序列,可以原处修改字节。
狼啸风云
2019/12/10
1.4K0
str、bytes和bytearray编码
ByteArray转byte[]:HeapByteBuffer&DirectByteBuffer
这两个get函数,都是先创建byte[]数组并传入,然后将数据写入。注意这里就需要知道创建的byte[]数组的长度,一般使用
BennuCTech
2022/04/12
2K0
ByteArray转byte[]:HeapByteBuffer&DirectByteBuffer
(Python3)Bytes和Bytearray操作
bytes.decode(encoding="utf-8", errors="strict")
用户7886150
2021/01/22
2.7K0
Python内置数据结构——bytes,bytearray
            bytes.encode(encoding = 'utf - 8',errors = 'stirct') -> bytes
py3study
2020/01/08
1.8K0
Python报错:TypeError: the JSON object must be str, bytes or bytearray, not ‘dict‘
当我尝试运行以下代码,来练习使用json.loads()和json.dumps()函数时,系统给我报出了这个错误。
JavaEdge
2021/02/23
3.1K0
Librdkafka的基础数据结构 4 --- String和ByteArray
下面要介绍的数据类型都是在kafka protocol的序列化中使用的 Kafka Protocol String Kafka Protocol ByteArray ---- Kafka Protocol String 所在文件:src/rdkafka_proto.h 表示kafka协议中的字符串,在协议的序列化中,先用2个字节表示字符串内容的长度,不包含结尾的\0, 紧随其后是字符串的内容: { uint16, data.. } 定义如下,包含长度和指向实际字符内容的指针; typedef struct
扫帚的影子
2018/09/05
6000
v8源码解析之ByteArray(v8 0.1.5)
ByteArray是字节数组的实现,顾名思义,该数组的元素大小的一个字节,不过类似js的Uint16Array,Uint32Array数组一样,我们可以把多个元素看做一个,把多个字节合并成一个元素看待。下面我们看一下实现。
theanarkh
2020/11/02
7510
v8源码解析之ByteArray(v8 0.1.5)
ASP.NET Core文件上传与下载(多种上传方式)
官方机器翻译的地址:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads
GuZhenYin
2018/07/31
3.7K0
ASP.NET Core文件上传与下载(多种上传方式)
ASP.NET Core文件上传与下载(多种上传方式)
前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.NET Core 2.0 发展到现在,已经很成熟了.下个项目争取使用吧. 正文 1.使用模型绑定上传文件(官方例子) 官方机器翻译的地址:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads 这里吐槽一下 - -,这TM的机器翻译..还不如自己看E文的.. 首先我们需要
GuZhenYin
2018/03/30
5.7K0
ASP.NET Core文件上传与下载(多种上传方式)
.NET Core Web API使用HttpClient提交文件的二进制流(multipart/form-data内容类型)
   在需要通过服务端请求传递文件二进制文件流数据到相关的服务端保存时,如对接第三方接口很多情况下都会提供一个上传文件的接口,但是当你直接通过前端Ajax的方式将文件流上传到对方提供的接口的时候往往都会存在跨域的情况,这时候我们就需要通过服务端提交文件流来解决这个跨域的情况。本篇的主角就是使用HttpClient进行Http请求,提交二进制文件流到文件服务器中。
追逐时光者
2021/06/11
3.5K0
.NET Core Web API使用HttpClient提交文件的二进制流(multipart/form-data内容类型)
.NET Core WebAPI 基础文件上传
这里有一个需要注意的地方,就是上传文件的参数名,需要跟接口的入参名一致,也就是 files,我们使用的类型为 IEnumerable< IFormFile>,主要是 IFormFile 这个,因为我们上传的文件可能不止一个,所以这里使用了集合,要是不喜欢 IEnumerable,换成 List 也是可以的;
郑子铭
2023/09/19
4040
.NET Core WebAPI 基础文件上传
ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
Bipin Joshi (http://www.binaryintellect.net/articles/f1cee257-378a-42c1-9f2f-075a3aed1d98.aspx) Uploading files is a common requirement in web applications. In ASP.NET Core 1.0 uploading files and saving them on the server is quite easy. To that end this
蒋金楠
2018/01/15
1.1K0
一款适用于.Net的高性能文件上传流
今天给大家推荐一款开源的适用于.Net的高性能文件上项目UploadStream。
郑子铭
2023/10/23
2700
一款适用于.Net的高性能文件上传流
ASP.NET Core 上传多文件 超简单教程
https://qcloud.coding.net/api/project/3915794/files/4463836/download
痴者工良
2019/08/08
4.8K0
ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取
前文索引: ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证 ASP.NET Core教程【一】关于Razor Page的知识 实体字段属性 再来看看我们的实体类 public class Movie { public int ID { get; set; } public string Title { get; set; } [Display(Name = "Release Date")] [Da
liulun
2018/01/12
1.6K0
【译】.NET 7 预览版 1 中的 ASP.NET Core 更新
.NET 7 预览版 1 现已推出!这是 .NET 下一个主要版本的第一个预览版,其中将包括使用 ASP.NET Core 进行 Web 开发的下一波创新。
郑子铭
2022/03/08
4K0
【译】.NET 7 预览版 1 中的 ASP.NET Core 更新
ASP.NET Core 给上传的图片加水印
图片加水印是网站中使用非常广泛的技术,可以保护网站内容的版权,例如我博客这样的网站。在传统ASP.NET(.NET Framework)中,我们可以使用System.Web.Helpers.WebImage来添加水印,就像这样:
Edi Wang
2019/07/08
2.9K0
ASP.NET Core 给上传的图片加水印
.NET 6一行代码搞定文件上传
在 Web 应用程序开发过程中,总是无法避免涉及到文件上传,这次我们来聊一聊怎么去实现一个简单方便可复用文件上传功能;通过创建自定义绑定模型来实现文件上传。
软件架构师Michael
2023/10/09
5670

相似问题

将pdf转换成byteArray - byteArray到String - String到byteArray - byteArray到pdf

13

ByteArray到HttpResponse

30

Int到byteArray

20

Hbase byteArray到Long

14

ByteArray到asp图像

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文