将ASP.NET中的文件上传到服务器

时间:2018-02-12 08:36:30

标签: c# asp.net asp.net-web-api

我正在一个网站上工作,用户可以在线申请某项工作。

除简历外,用户还必须提交信息。

我对这种工作很陌生,我会感激任何帮助。

这是我对post方法的尝试,但它会产生以下异常:

  

意外的流结束。有结束边界吗?

public async Task<IHttpActionResult> PostCV()
{
    IList<string> AllowedFileExtensions = new List<string> { ".txt", ".pdf" };

    var parser = new MultipartFormDataParser(await Request.Content.ReadAsStreamAsync());
    IList<FilePart> files = parser.Files;
    IList<ParameterPart> formData = parser.Parameters;

    FilePart uploadedContent = files.First();
    var originalContentFileName =
       uploadedContent.FileName.Trim('\"');

    var originalExtension = Path.GetExtension(originalContentFileName);

    if (!AllowedFileExtensions.Contains(originalExtension))
        return BadRequest("Bad extension");

    string modifiedContentFileName =
        string.Format("{0}{1}", Guid.NewGuid().ToString(),
        originalExtension);

    Stream input = uploadedContent.Data;

    string Url = string.Empty;
    string fileName = string.Empty;
    string directoryName = string.Empty;

    directoryName = Path.Combine(HttpRuntime.AppDomainAppPath, "Uploads");
    fileName = Path.Combine(directoryName, modifiedContentFileName);

    if (File.Exists(fileName))
        File.Delete(fileName);


    using (Stream file = File.OpenWrite(fileName))
    {
        try
        {
            input.CopyTo(file);
            file.Close();

            var cv = new CV{ Path = fileName };
            db.CVs.Add(cv);
            db.SaveChanges();

            return Json(cv);

        }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }
}

提前致谢

1 个答案:

答案 0 :(得分:0)

显然我应该在正文部分选择form-data,用任何东西设置密钥(例如文件名),并在值中选择文件。
此外,您需要在路径中创建一个文件夹,在我的情况下,在指定的目录中名为上传

对那些帮助过的人表示非常感谢。