1

我正在尝试从数据库中获取文件名,为其附加正确的路径并将其下载到我的系统上。不幸的是,我得到了一个DirectoryNotFoundException.

我点击的按钮是:“下载身份证明”

处理请求时发生未处理的异常。DirectoryNotFoundException:找不到路径“D:\images\Apply\POfId\10157d06-bf72-4ea1-b316-b22ac5feae20.jpg”的一部分。System.IO.FileStream.ValidateFileHandle(SafeFileHandle 文件句柄)

这是我的视图标记:

@model Derawala.Models.ViewModels.ParentForApply
@{
    ViewData["Title"] = "Details";
    Layout = "_Layout";
}
<h1>Details</h1>
<form method="post">
    <input asp-for="@Model.Apply.PofId" hidden />
    <div class="container backgroundWhite pt-4">
        <div class="card" style="border:1px solid #000000; ">
            @*<div class="card-header bg-dark text-light ml-0 row container" style="border-radius: 0px;">*@
            <div class="card-header" style="background-color:black;">
                <div class="row">
                    <div class="col-12 col-md-6 align-self-start">
                        <h1 class="text-white">@Model.Apply.FirstName&nbsp;@Model.Apply.LastName</h1>
                    </div>
                    <div class="col-12 col-md-6 align-self-end">
                        <h1 class="text-warning">Application Id :@Model.Apply.AppId</h1>
                    </div>
                </div>
            </div>
            <div class="card-body">
                <div class="container rounded p-2">
                    <div class="row">
                        <div class="col-12 col-lg-4 p-1 text-center">
                            <img src="@WC.ImagePath[0]@Model.Apply.Photo" class="rounded w-25" />
                        </div>
                        <div class="col-12 col-lg-8">
                            <div class="row pl-3">

                                <div class="col-12">
                                    <span class="badge p-3 border" style="background-color:lightpink">@Model.Apply.Qualification</span>
                                    <span class="badge p-3 border" style="background-color:lightskyblue">@Model.Apply.SchType</span>
                                    <h3 class="text-success"></h3>

                                    <p class="text-secondary">@Model.Apply.Description</p>
                                </div>

                            </div>
                            <div class="row pl-3">
                                <div class="col-12">
                                    Download Id Proof : <button type="submit" class="btn-primary" asp-route-id="@Model.Apply.PofId" asp-action="DownloadFile">Download</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="card-footer bg-dark">
                <div class="row">
                   
                    <div class="col-12 col-md-6 ">
                        
                    <a asp-action="RemoveFromCart" class="btn btn-primary btn-square form-control btn-lg" style="height:50px;">Donate Now <i class="fas fa-hand-holding-medical"></i></a> 
                    </div>
                    <div class="col-12 col-md-6">

                    <button type="submit" class="btn btn-danger form-control btn-lg" style="height:50px;">Delete This Application <i class="fas fa-trash-alt"></i></button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

这是控制器方法的代码:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DownloadFile(string id)
{
        string DirPath = _webHostEnvironment.WebRootPath;
        var objdata = _db.Apply.Where(i => i.PofId == id).FirstOrDefault();
        string FileName = objdata.PofId;
        var FilePath = Path.Combine(DirPath,WC.ImagePath[1], FileName);
        var memory = new MemoryStream();

        using (var stream = new FileStream(FilePath,FileMode.Open))
        {
            await stream.CopyToAsync(memory);
        }

        memory.Position = 0;
        var contentType = "APPLICATION/octet-stream";
        return File(memory, contentType, FileName);
}

您可以在此屏幕截图中详细查看错误

您还可以看到此屏幕截图中实际存在图像和路径

4

0 回答 0