仅允许用户查看其上载的数据(Asp.NET MVC5)

问题描述 投票:0回答:1

我可以上传和下载上传的文件,但是我希望用户只能看到他们的文件。 (用户1仅看到他的数据,而用户2则没有)我该怎么办?任何想法都可以帮上忙。谢谢!

这是我的控制器,我知道在管理员,用户,编辑者之间,我可以使用Authorize限制访问,但这无助于我在user_id之间限制访问。

(需要提及隐私是我项目的一个非常重要的方面)

public class FileUploadController : Controller
{
    // GET: FileUpload
    public ActionResult Index()
    {
        var items = GetFiles();
        return View(items);
    }

    // POST: FileUpload
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {

        if(file != null && file.ContentLength > 0 )
            try
            {

                string path = Path.Combine(Server.MapPath("~/Files"),
                    Path.GetFileName(file.FileName));

                file.SaveAs(path);
                ViewBag.Message = "File uploaded successfully";

            }
            catch(Exception ex)
            {
                ViewBag.Message = "ERROR:" + ex.Message.ToString();
            }
        else
        {
            ViewBag.Message = "You have not specified a file.";
        }

        var items = GetFiles();

        return View(items);

    }


    public FileResult Download(string downloadedfile)
    {
        var FileVirtualPath = "~/Files/" + downloadedfile;

        return File(FileVirtualPath, "application/force-download", Path.GetFileName(FileVirtualPath));

    }



    private List <string> GetFiles()
    {

        var dir = new System.IO.DirectoryInfo(Server.MapPath("~/Files"));
        System.IO.FileInfo[] fileNames = dir.GetFiles("*.*");

        List<string> items = new List<string>();

        foreach (var file in fileNames)
        {
            items.Add(file.Name);
        }

        return items;

    }



}

这是视图:

<h2> File Upload </h2>

@model List<string>

@using (Html.BeginForm("Index", "FileUpload", FormMethod.Post,
        new { enctype = "multipart/form-data" }))
{


    <label for="file"> Upload </label>
    <input type="file" name="file" id="file" />
    <br /><br />

    <input type="submit" value="Upload" />
    <br /><br />

    @ViewBag.Message

    <br/>

    <h2>Documents list</h2>

    <table style="width:100%">
        <tr>
            <th> File Name </th>
            <th> Link  </th>
        </tr>

        @for (var i = 0; i <= (Model.Count)-1 ; i++)
        {
            <tr>

                <td>@Model[i].ToString() </td>

                <td>@Html.ActionLink("Download", "Download", new { downloadedfile = Model[i].ToString() }) </td>

            </tr>

        }


    </table>
}


<style>

        table, th, td {
                        border: 1px solid white;
                      }
</style>
asp.net asp.net-mvc-5
1个回答
0
投票

您可以分离到文件夹,创建具有用户ID的文件夹,并将数据放入用户文件夹。

当您列出时,仅显示用户的文件夹

© www.soinside.com 2019 - 2024. All rights reserved.