如何更改httppostedfilebase的内容类型?

时间:2018-03-21 09:57:15

标签: c# asp.net-mvc

我正在使用HttpPostedFileBase使用ASP.NET MVC上传文件。我需要将其发布到API调用,我收到错误

  

" StatusCode:403,Reason Phrase:' Forbidden',Version:1.1,Content:   System.Net.Http.StreamContent"

这是因为我将文件内容传递为" application / octet-stream",其中API调用要求内容类型为" application / vnd.qlik.sense.app" 。 互联网上的很多帖子都说HttpPostedFileBase是只读的,我们无法更改内容类型。任何人都可以告诉我们如何更改HttpPostedFileBase的内容类型。这可能吗?

这是我的代码。

[HttpPost]
public ActionResult UploadFile(HttpPostedFile file)
{    
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileNameWithoutExtension(file.FileName);
        APIcall.Upload(fileName);
    }  
    return RedirectToAction("Index");
}

1 个答案:

答案 0 :(得分:0)

在此处找到how set HttpPostedFileBase ContentType value in runtime

public class MemoryPostedFile : HttpPostedFileBase
{
    private readonly byte[] fileBytes;

    public MemoryPostedFile(byte[] fileBytes, string fileName = null,string ContentType=null)
    {
        this.fileBytes = fileBytes;
        this.FileName = fileName;
        this.ContentType = ContentType;
        this.InputStream = new MemoryStream(fileBytes);
    }

    public override int ContentLength => fileBytes.Length;

    public override string FileName { get; }

    public override string ContentType { get; }

    public override Stream InputStream { get; }
}