使用多部分时如何从图像中删除内容

how to remove content from images when using multipart

所以我通过使用多部分表单数据在我的网站 API 中制作了一个上传器,但问题是当我从文件流中保存我的图片时它也给了我这里的内容

 -----------------------------7e1e364095c
Content-Disposition: form-data; name="file"; filename="C:\Users\kewin\Downloads\windows 10 pro.jpg"
Content-Type: image/jpeg

 the binary starts from here        

如果我删除那 4 行,我可以看到我的图片,所以有什么方法可以删除它,所以我只剩下图片

    public async Task<IHttpActionResult> UploadImage(string fileName = "")
    {
        if (fileName == "")
        {
            fileName = Guid.NewGuid().ToString();
        }
            if (!Request.Content.IsMimeMultipartContent("form-data"))
        {
            return BadRequest("Could not find file to upload");
        }
        var provider = await Request.Content.ReadAsMultipartAsync(new InMemoryMultipartFormDataStreamProvider());

        var files = provider.Files;
        var uploadedFile = files[0];
        var extension = ExtractExtension(uploadedFile);
        var contentType = uploadedFile.Headers.ContentType.ToString();
        var savePath = ConfigurationManager.AppSettings["savePath"];
        var file = string.Concat(savePath, fileName, extension);

        try
        {
            var request = HttpContext.Current.Request;
            var fileDir = file + request.Headers[""];
            using (var fs = new FileStream(fileDir, FileMode.Create))
            {
                request.InputStream.CopyTo(fs);
            }
            return Ok();
        }

        catch (StorageException e)
        {
            return BadRequest(e.Message);
        }

        try
        {
                var fileInfo = new UploadedFileInfo
            {
                FileName = fileName,
                FileExtension = extension,
                ContentType = contentType,
                FilePath = savePath + imageFile
            };
            return Ok(fileInfo);
        }

当前您从request.InputStream读取图片数据,其中包含完整的未解析的多部分内容,包括您不需要的headers。相反,您应该从您创建的 InMemoryMultipartFormDataStreamProvider 中读取图片数据,它会解析输入流并为您提供对 headers 和单个上传文件的数据流的简单访问。

....
var provider = await Request.Content.ReadAsMultipartAsync(new InMemoryMultipartFormDataStreamProvider());

var files = provider.Files;
var uploadedFile = files[0];
var extension = ExtractExtension(uploadedFile);
var contentType = uploadedFile.Headers.ContentType.ToString();
var savePath = ConfigurationManager.AppSettings["savePath"];
var file = string.Concat(savePath, fileName, extension);

try
{
    using (var fs = new FileStream(file, FileMode.Create))
    {
        await uploadedFile.CopyToAsync(fs);
    }
    return Ok();
}
....