在Db中保存文件

时间:2018-06-15 16:34:53

标签: c# asp.net asp.net-core

我真的很喜欢编程如此轻松的东西对我来说很难,如果有人可以解释我或帮助我在我的情况下我会很多。 在我的create方法中,我需要保存一个文件(db中的pdf)。 我现在拥有的: 型号:

public class Candidate : BaseEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Number { get; set; }
    public string Profile { get; set; }
    public Byte[] CV { get; set; }
}

控制器:

   [HttpPost("UploadFiles")]
    public IActionResult Post(List<IFormFile> files)
    {
        long size = files.Sum(f => f.Length);

        // full path to file in temp location
        var filePath = Path.GetTempFileName();

        foreach (var formFile in files)
        {
            if (formFile.Length > 0)
            {
                using (var stream = new MemoryStream())
                {
                    files.CopyTo(stream);
                    //await formFile.CopyToAsync(stream);
                }
            }
        }

        // process uploaded files
        // Don't rely on or trust the FileName property without validation.

        return Ok(new { count = files.Count, size, filePath });
    }

在我看来,我正在使用它来附加文件:

 <form method="post" enctype="multipart/form-data" asp-controller="UploadFiles" asp-action="Index">
            <div class="form-group">
                <div class="col-md-10">
                    <p>Upload one or more files using this form:</p>
                    <input type="file" name="files" multiple />
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-10">
                    <input type="submit" value="Upload" />
                </div>
            </div>
        </form>

1 个答案:

答案 0 :(得分:1)

  

您无法获得可以使用的文件路径。上传的文件将出现在HTTP请求中,但您尚未将操作方法​​设置为正确接受。你真的应该阅读一些关于如何在ASP.NET MVC中上传文件的教程,这样你就有了一般的想法,而不是要求Stack Overflow上的某个人解释你需要做什么。

     

@mason。

这不是您问题的完整答案,但它会告诉您如何在asp.net mvc中上传文件。你必须根据你的问题修改它。

这是一个将回发到当前操作的表单。

@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ 
    <input type="file" name="file" />
    <input type="submit" name="Submit" id="Submit" value="Upload" />
}

此视图将发布的操作方法将文件保存到名为“uploads”的App_Data文件夹中的目录中。

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file) {

   if (file.ContentLength > 0)
   {
       var fileName = Path.GetFileName(file.FileName);
       var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
       file.SaveAs(path);
   }

   return RedirectToAction("Index");
}

Visit this for complete solution

再次这个答案只是为了解我们如何制作HTTP请求来上传文件以及如何保存文件。