【问题标题】:How to download file attachment in browser from physical path如何从物理路径下载浏览器中的文件附件
【发布时间】:2022-01-22 17:59:46
【问题描述】:

我目前正在为我的公司开发一个项目,但遇到了问题。我不知道为什么我不能下载文件附件。

我已附上下面截图的 jpg 文件供您查看。屏幕截图中有一个名为 sad kermit(2).jpg 的文件附件和控制台中的一条消息。我期待在悲伤的 kermit(2).jpg 上的某个地方有下载功能,但它不在那里。

我正在使用 mvc 和 kendo jquery。这是我的剑道表单代码。

$("#form").kendoForm({
        validatable: { validationSummary: true },
        orientation: "horizontal",
        formData: {
            ID: "@Model.ID",
            IssueNumber: "@Model.ISSUE_NUM",
            Title: "@Model.TITLE",
            Environment: "@Model.ENVIRONMENT",
            Application: "@Model.APPLICATION",
            Module: "@Model.MODULE",
            Priority: "@Model.PRIORITY",
            Status: "@Model.STATUS",
            FID: "@Model.FID",
            Jobname: "@Model.JOBNAME",
            Username: "@Model.USERNAME",
            MantisNumber: "@Model.MANTIS_NO",
            ModifiedBy: "@ViewBag.User_Name",
            Upload: "",
            ModifiedDate: "@Model.MODIFIED_DATE",
            Description: "@Model.DESCRIPTION",
            IssueType: "@Model.ISSUE_TYPE",
            IssueCategory: "@Model.ISSUE_CATEGORY",
            IssueResolution: "@Model.ISSUE_RESOLUTION",
            Remarks: "@Model.REMARKS",
            AssignedTo: "@Model.ASSIGNED_TO",
            CreatedBy: "@ViewBag.User_Name"
        },
        items: [{
            type: "group",
            label: "Edit Issue Details",
            items: [
                ...,
               ...,
                ...,
                ...,
                ...,
               ...,
                ...,
                ...,
                ...,
                ...,
                ...,
                {
                    field: "Upload",
                    label: "Upload File:",
                    editor: function (container, options) {
                        $("<input name='files' id='files' type='file' aria-label='files' />").appendTo(container).kendoUpload({
                            async: {
                                saveUrl: '@Url.Action("UploadFiles", "Issue")',
                                removeUrl: '@Url.Action("RemoveFiles", "Issue")',
                                autoUpload: true
                            },
                            files: uploads
                        });
                    }
                },
                ...,
                ...,
                ...,
                ...,
                ...,
                ...,
                ...,
                ...,
            ]
            }],
            submit: function (ev)...
        });

这是我用来尝试在同一视图中下载文件附件的代码,但我猜它不起作用

$(".k-file").click(function (e) {
            var filename = $(this).find(".k-file-name").html();

            $.ajax({
                type: "POST",
                data: { "name": filename },
                url: "/Issue/DownloadFile",
                success: function (res) {
                    if (res.Success) {
                        console.log(res.DownloadUrl);
                        window.open(res.DownloadUrl, '_blank');
                    }
                }
            });
        });

这是控制器

[HttpPost]
    public ActionResult DownloadFile(string name)
    {
        var folderName = Session["IssueNum"] as string;

        string fileDirectory = Path.Combine(System.Web.HttpContext.Current.Request.PhysicalApplicationPath, "App_Data", folderName, name);

        return Json(new
        {
            Success = true,
            DownloadUrl = fileDirectory
        }, JsonRequestBehavior.AllowGet);
    }

您能建议我一个解决方案吗?

截图:

【问题讨论】:

    标签: jquery kendo-ui


    【解决方案1】:

    如果您的浏览器可以预览文件,则不会下载该文件。你可以试试下面的代码。我修改了你的部分代码。

    $(".k-file").click(function (e) {
                var filename = $(this).find(".k-file-name").html();
    
                $.ajax({
                    type: "POST",
                    data: { "name": filename },
                    url: "/Issue/DownloadFile",
                    success: function (res) {
                        if (res.Success) {
                            console.log(res.DownloadUrl);
                            //window.open(res.DownloadUrl, '_blank');
                            var link = document.createElement("a"); 
                          link.setAttribute('download', ""); 
                          link.setAttribute('href', res.DownloadUrl); 
                          link.href = url; 
                          document.body.appendChild(link); 
                          link.click(); 
                          link.remove();
                        }
                    }
                });
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2017-11-16
      • 2015-01-22
      • 2015-11-12
      • 2020-12-31
      • 1970-01-01
      相关资源
      最近更新 更多