首页 > 编程语言 >ASP.NET Core WebAPI如何获得远程文件返回文件流给前端?

ASP.NET Core WebAPI如何获得远程文件返回文件流给前端?

时间:2023-07-29 15:22:42浏览次数:27  
标签:WebAPI 文件 Core 前端 wr new byte

 

一、根据网络路径把文件保存成byte[]返回给前端

项目采用的是前后端分离的模式,后端使用ASP.NET Core WebAPI方式,将文件流返回给前端。

/// <summary>
/// 根据网络路径把文件保存成byte[]
/// </summary>
/// <param name="filePath"></param>
public byte[] UrlToByte(string filePath)
{
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(filePath);
    req.Method = "GET";
    using (WebResponse wr = req.GetResponse())
    {
        StreamReader responseStream = new StreamReader(wr.GetResponseStream(), Encoding.UTF8);
        int length = (int)wr.ContentLength;
        byte[] bs = new byte[length];
 
        HttpWebResponse response = wr as HttpWebResponse;
        Stream stream = response.GetResponseStream();
 
        //读取到内存
        MemoryStream stmMemory = new MemoryStream();
        byte[] buffer1 = new byte[length];
        int i;
        while ((i = stream.Read(buffer1, 0, buffer1.Length)) > 0)
        {
            stmMemory.Write(buffer1, 0, i);
        }
        byte[] arraryByte = stmMemory.ToArray();
        stmMemory.Close();
        return arraryByte;
    }
}

 

二、解决前端无法获得fileName

前端采用的是Vue技术栈,采用的是axios调用后端接口。前端无法获得fileName需要修改后端ASP.NET Core WebAPI项目中的【Startup.cs】文件。

 修改ConfigureServices方法中的AddCors。

 

代码示例:

 .WithExposedHeaders("Content-Disposition");//应前端要求暴露Content-Disposition

 

标签:WebAPI,文件,Core,前端,wr,new,byte
From: https://www.cnblogs.com/kimiliucn/p/17589873.html

相关文章

  • rdma-core之riostream.c
    头文件和库以及全局变量#include<stdio.h>#include<stdlib.h>#include<string.h>#include<strings.h>#include<errno.h>#include<getopt.h>#include<sys/types.h>#include<sys/socket.h>#include<sys/time.h>#i......
  • .NET Core 6.0 自定义异常处理中间件配置
    异常处理的几种方式:1、通过异常过滤器捕获异常进行处理2、自定义异常处理中间件,自定义异常处理中间件,中间件依托于请求管道运行,并且中间件的执行是有序的,与业务隔离开的,将中间件放置在请求管道开始能够捕获到全局异常。 配置异常处理中间件:1、编写自定义异常处理中间件,Cust......
  • JS实现文件转base64
     核心:functionfile2base64(){fileAddress=document.getElementById("fileImage").files[0];file=newFileReader();file.readAsDataURL(fileAddress);file.onload=function(){console.log(file.result);}}  完整代码:<!DOCTYPE......
  • 文件拼接
    importjava.io.*;importjava.nio.channels.FileChannel;importjava.util.ArrayList;importjava.util.List;publicclassMain{privatestaticStringFILE_PATH="D:\\BaiduNetdiskDownload\\test";privatestaticStringDEST_FILE_PATH......
  • .netcore 中高性能队列Channel的应用与封装
          Channel存在于命名空间System.Threading.Channels中,是.net一种新型的线程安全集合,提供了发布和订阅消息处理功能,在一个服务中若接收消息和处理消息都很频繁,且处理消息耗时较长时,Channel是一种好的处理方式。1、创建Channel方式(支持泛型消息格式) 支持5种创建......
  • .NetCore中dump文件的创建和分析
    1、通过程序生成dump文件  安装nuget包:Microsoft.Diagnostics.NETCore.Client  生成dump文件代码:  varclient=newDiagnosticsClient(Environment.ProcessId);client.WriteDump(DumpType.Full,Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"dumps","1.dump&quo......
  • linux获取子文件和子目录
    linux获取子文件和子目录#include<dirent.h>#include<sys/stat.h>#include<string>#include<vector>#include<stdio.h>//#include<android/log.h>#defineTAG"[demo]"//#defineLOGD(...)__android_log_print(AND......
  • CTFer成长记录——CTF之Web专题·攻防世界—fileinclude·好多文件呀
    一、题目链接https://adworld.xctf.org.cn/challenges/list二、解法步骤  WRONGWAY!<?phpinclude("flag.php");highlight_file(__FILE__);if(isset($_GET["file1"])&&isset($_GET["file2"])){$file1=$_GET["file1"......
  • linux tar命令之小知识-解压指定层级目录以及指定文件
    我们以解压k8s二进制源码文件为例,只解压出第三层级目录下的kube-apiserver、kube-controller-manager、kubectl、kubelet、kube-proxy、kube-scheduler这几个文件。k8s源码文件目录结构,目录实在太多了,我删除了大部分,不在这里显示[root@k8s-master01tmp]#treekubernetesku......
  • 基于Python实现RLE格式分割标注文件的格式转换
    下面我将详细讲解“基于Python实现RLE格式分割标注文件的格式转换”的完整攻略。一、RLE格式分割标注文件是什么?RLE格式是一种更加高效的图像语义分割数据表示格式,其数据以一串RLE编码的方式进行存储,而不是以像素点的形式存储,有效减少了数据的体积。RLE格式分割标注文件即是使......