标签: filestreamresult

使用FileStreamResult,MemoryStream是如何关闭的?

以下代码有效,但我想知道MemoryStream创建是否正确关闭.应该如何执行或FileStreamResult为我处理它?

public FileStreamResult DownloadBudgetedRoleOpportunities(
    Guid projectGuid, 
    IEnumerable<Guid> guidRequiredRoles)
{
    var rolebroker = new ProjectRoleBudgetBroker();
    var memstream = rolebroker.CreateBudgetedRoleOpportunies(
        projectGuid, 
        guidRequiredRoles);

    var fsr = new FileStreamResult ( memstream, "application/csv" )
              {
                FileDownloadName = "RoleOpportunities.csv"
              };
    // memstream.Close(); throws exception
    return fsr;
}
Run Code Online (Sandbox Code Playgroud)

.net memorystream filestreamresult asp.net-mvc-3

32
推荐指数
1
解决办法
9797
查看次数

ASP.NET MVC FileStreamResult未按预期工作

我有以下代码,我从任何非必要的行中删除了离开minimun可再现的情况.我期望它能够返回图像,但事实并非如此.据我所知,它返回一个空文件:

public ActionResult Thumbnail(int id) {
    var question = GetQuestion(db, id);
    var image = new Bitmap(question.ImageFullPath);
    MemoryStream stream = new MemoryStream();
    image.Save(stream, ImageFormat.Jpeg);
    return new FileStreamResult(stream, "image/jpeg");
}
Run Code Online (Sandbox Code Playgroud)

你能确定这段代码有什么问题吗?在调试器中,我可以看到流的大小增长,所以它似乎获取数据,虽然我无法验证它是正确的数据.我不知道如何调试FileStreamResult本身.

asp.net-mvc stream filestreamresult

26
推荐指数
2
解决办法
1万
查看次数

不使用ASP.NET MVC FileStreamResult,fileDownloadName

以下内容返回浏览器尝试直接显示内联的PDF.这工作正常.但是,如果我尝试下载该文件,则下载名称不是"myPDF.pdf",而是路由中的ID(myapp/controller/PDFGenerator/ID).是否可以将文件下载名称设置为"myPDF.pdf"?

public FileStreamResult PDFGenerator(int id)
{
    MemoryStream ms = GeneratePDF(id);

    byte[] file = ms.ToArray();
    MemoryStream output = new MemoryStream();
    output.Write(file, 0, file.Length);
    output.Position = 0;
    HttpContext.Response.AddHeader("content-disposition", 
    "inline; filename=myPDF.pdf");

    return File(output, "application/pdf", fileDownloadName="myPDF.pdf");
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc pdf-generation filestreamresult

12
推荐指数
2
解决办法
2万
查看次数

流MP3文件MVC3

我正在尝试使用音频HTML5标记流式传输文件.我已经将Controller操作放回FileStream并将其附加到src以获取音频.但是,当我按下默认播放按钮时,内容不会加载到音频标签中,也不会播放.我知道当我直接访问src时控制器正在工作.但是,它在HTML5音频标记中不起作用.

谁能告诉我我失踪了什么?

html5 filestreamresult asp.net-mvc-3

5
推荐指数
1
解决办法
7399
查看次数

为什么我的文件结果文件名已损坏IE9?

我正在尝试为我的用户生成并返回文件.某些文件名包含unicode字符:aäa.pdf.当尝试在IE 9中下载它们时,文件名被破坏,下载如下所示:

         Ie9文件名问题

在Chrome中,它按预期工作.这是return语句:

return File(fileStream: stream, 
            contentType: System.Net.Mime.MediaTypeNames.Application.Octet, 
            fileDownloadName: myModel.Name + "." + pub.OutputFileType);
Run Code Online (Sandbox Code Playgroud)

我该如何解决IE 9的问题?

.net utf-8 filestreamresult internet-explorer-9 asp.net-mvc-3

5
推荐指数
1
解决办法
1085
查看次数

如果成功则返回 FileStreamResult 或如果失败则返回 View

在 MVC 中,如果我的查询成功,有没有办法返回 FileStreamResult,但如果不成功,则仅返回 ViewBag 中的错误视图。就像这样....

    public FileStreamResult Submit()
    {
        string retVal;
        try
        {
            DataSet ds = new DataSet();

            ds = getDS();
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                ExcelXmlWorkbook book = ExcelXmlWorkbook.DataSetToWorkbook(ds);
                string fileName = "results.xml";
                book.Export(fileName, ExportFormat.Xml, 0);
                FileInfo info = new FileInfo(fileName);
                return File(info.OpenRead(), "application/x-msexcel");
            }
            else
            {
                retVal = "No Data";
            }

        }
        catch (Exception ex)
        {
            retVal = ex.Message;
        }

        ViewBag.Result = retVal;

        return View("ViewName");
    }
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,但基本上,如果数据提取成功,我想打开一个结果文件...如果没有成功,我想显示该页面,或重定向到另一个页面以向用户显示结果失败了。也欢迎任何关于更好方法的建议。谢谢!

c# asp.net-mvc filestreamresult

4
推荐指数
1
解决办法
2243
查看次数

asp.net mvc 服务 txt 被截断

我正在尝试使用操作提供从数据库制作的 txt 文件。动作如下:

public ActionResult ATxt()
{
    var articulos = _articulosService.ObteTotsArticles();
    return File(CatalegATxt.ATxt(articulos), "text/plain");
}
Run Code Online (Sandbox Code Playgroud)

CatalegATxt 类是:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using WebDibaelsaMVC.DTOs.Busqueda;

namespace WebDibaelsaMVC.TxtLib
{
    public static class CatalegATxt
    {
         public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles)
         {
            var stream = new MemoryStream();
            var streamWriter = new StreamWriter(stream, Encoding.UTF8);
            foreach (ArticuloBusquedaDTO article in articles)
            {
                streamWriter.WriteLine(article.ToStringFix());
            }
            stream.Seek(0, SeekOrigin.Begin);
            return stream;
        }

        public static string ToStringFix(this ArticuloBusquedaDTO article)
        {
            string result = "";
            result += article.CodigoArticulo.PadRight(10, ' …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc text-files filestreamresult

3
推荐指数
1
解决办法
1464
查看次数

OutputStreamWriter java无法存入字符串

transformer.transform(new DOMSource(doc),new StreamResult(new OutputStreamWriter(System.out, "UTF-8")));
Run Code Online (Sandbox Code Playgroud)

我正在使用它来生成控制台的输出.我想将输出存储到刺痛中.我不知道该怎么做.谁能帮我?:(

提前致谢

java utf-8 filestreamresult

3
推荐指数
1
解决办法
5504
查看次数

使用 Ajax/Axios 时从 FileStreamResult 获取文件名?

我在我的 asp.net 核心 api 控制器中有

 return new FileStreamResult(excel, "application/ms-excel")
        {
            FileDownloadName = filename
        };
Run Code Online (Sandbox Code Playgroud)

我正在做一个 ajax 请求来获取这个文件

   var response = axios.get(
      `/endpoint`, {
        responseType: 'blob'
      });
Run Code Online (Sandbox Code Playgroud)

然后我使用了一个名为download的库,它接受 3 个参数,其中一个参数是“文件名”,我想知道是否可以以某种方式获取来自服务器的文件名。

download(response.data,"test.xlsx", content);
Run Code Online (Sandbox Code Playgroud)

科尔斯

 services.AddCors(options => options.AddPolicy("Cors",
       builder =>
       {
           builder.AllowAnyOrigin()
           .AllowAnyMethod()
           .AllowAnyHeader();
       }));
Run Code Online (Sandbox Code Playgroud)

javascript ajax filestreamresult asp.net-core axios

3
推荐指数
1
解决办法
1909
查看次数

针对返回 FileStreamResult 的控制器的 ASP.NET MVC Moq 单元测试

我正在针对返回 pdf 文件的控制器编写测试用例。

控制器代码:

  public FileStreamResult GeneratePdfReport(string context)
    {
        byte[] pdfReportContents = _helpPageBusinessService.GetHelpPagesAsPdf();
        Stream stream = new MemoryStream(pdfReportContents);
        HttpContext.Response.AddHeader("content-disposition", "attachment; filename=GSFA_Help_Pages_Printout.pdf");
        return new FileStreamResult(stream, "application/pdf");
    }
Run Code Online (Sandbox Code Playgroud)

单元测试代码:

 [TestMethod]
    public void GeneratePdf()
    {
        var controller = new HelpController(_helpPageBusinessServiceReportServices, Logger);
        try
        {
            var result = controller.GeneratePdfReport("Work_Request_Section");
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.FileStream);
        }
        finally
        {
            controller.Dispose();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个单元测试用例不起作用,它总是失败,因为 HttpContext 为空。

有没有人知道如何针对这种类型的控制器编写单元测试用例?

非常感激 !

杰弗里

asp.net-mvc unit-testing filestreamresult

2
推荐指数
1
解决办法
4236
查看次数