首页 > 解决方案 > 无法使用 Filestream 类写入文件(返回 400 - 错误请求)

问题描述

当我尝试使用这个小代码将图像文件写入服务器时:

[HttpPost]
    public IActionResult Post([FromBody] ImgViewModel imagem)
    {

        try
        {
            if (imagem.base64.Contains(","))
            {
                imagem.base64 = imagem.base64
                  .Substring(imagem.base64
                  .IndexOf(",") + 1);
            }

            imagem.FileAsByteArray = Convert.FromBase64String(imagem.base64);

            var folderName = Path.Combine("Resources", "Images");
            var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);

            var ext = Path.GetExtension(imagem.filename);
            var fileName = Guid.NewGuid().ToString() + ext;
            var dbPath = Path.Combine(folderName, fileName);

            using (var fs = new FileStream(dbPath, FileMode.CreateNew))
            {
                fs.Write(imagem.FileAsByteArray, 0,
                         imagem.FileAsByteArray.Length);
                fs.Close();

            }

            ImageViewModel img = new ImageViewModel()
            {
                ExternalId = new Guid(imagem.id),
                Type = (ImageType)1,
                Url = dbPath

            };

            var imgx = Mapper.Map<ImageViewModel, Domain.Entities.Image>(img);

            _service.Add(imgx);
            _service.Commit();


            return new OkObjectResult(JsonConvert.SerializeObject(imagem));

        }
        catch (Exception)
        {

            throw;
        }

    }

我收到 400 - 错误请求错误。我刚刚评论了这部分代码:

 using (var fs = new FileStream(dbPath, FileMode.CreateNew))
             {
                fs.Write(imagem.FileAsByteArray, 0,
                         imagem.FileAsByteArray.Length);
                fs.Close();

        }

并再次发布它,没有写入 Filestream 文件,其余代码工作正常。因此,错误出现在这部分代码中。

另外,我已经把这段代码放在我的课堂上,试图获得服务器的权限来编写这些图像文件

[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]

另外,在服务器中,我认为我已经正确设置了写入文件所需的权限

有人知道我错过了什么吗?

提前致谢。

标签: asp.net.netapiiisfilestream

解决方案


推荐阅读