C# 用webapi模拟文件下载

C# 用webapi模拟文件下载,c#,asp.net-web-api,C#,Asp.net Web Api,我有一个web api控制器,我想编写一个模拟文件下载的函数(不是真正的文件-只是动态生成的文件) 我想做的是向api发送一个带有文件大小的参数,并让它返回一个动态生成的“二进制”文件 类似于此php代码的内容: <?php $filesize = 20971520; // 20 Mo if (isset($_POST['d'])) { header('Cache-Control: no-cache'); header('Content-T

我有一个web api控制器,我想编写一个模拟文件下载的函数(不是真正的文件-只是动态生成的文件)

我想做的是向api发送一个带有文件大小的参数,并让它返回一个动态生成的“二进制”文件

类似于此php代码的内容:

<?php
    $filesize = 20971520; // 20 Mo

    if (isset($_POST['d'])) {
        header('Cache-Control: no-cache');
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: '. $filesize);

        for($i = 0 ; $i < $filesize ; $i++) {
            echo chr(255);
        }
    }
?>
我试着摆弄它,并改变它,但没有运气

如果有人能给我指出正确的方向并帮助我,我将不胜感激

谢谢诸如此类的事

public class FakeDownloadController: ApiController
{
    public HttpResponseMessage Get([FromUri] int size)
            {
                var result = new HttpResponseMessage(HttpStatusCode.OK);
                byte[] data = new byte[size];
                var stream = new MemoryStream(data);
                result.Content = new StreamContent(stream);
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/binary");
                var contentDisposition = new ContentDispositionHeaderValue("attachment");
                contentDisposition.FileName = string.Format("{0}.{1}", "dummy","bin");
                result.Content.Headers.ContentDisposition = contentDisposition;
                return result;
            }
}
用法:

http://localhost:port/api/FakeDownload/?size=6543354
将返回一个约6MB的文件,该文件填充NULL,称为“dummy.bin”

希望有帮助

http://localhost:port/api/FakeDownload/?size=6543354