请求URL太长

时间:2017-01-04 09:39:45

标签: c# asp.net-mvc file

当我尝试下载文件时,我收到此错误“请求URL太长”。该网址显示我要下载的数据但不下载。

下载

时如何解决请求网址太长错误

我的代码

的Javascript

 <script>
                    function DownloadIndexController(possID) {
                        $.ajax({
                            url: '@Url.Action("DownloadIndex", "Poss")',
                            contentType: 'application/json; charset=utf-8',
                            datatype: 'json',
                            data: { possID: possID },
                            type: "GET",
                            success: function (returnValue) {

                                window.location = '/DownloadIndex/Poss' + returnValue;
                            }
                        })
                    }
            </script>

控制器

  [HttpGet]
    public virtual ActionResult DownloadIndex(int possID)
    {
        try
        {
            possFilename = possFilename.Replace(",", ",");
            string fullPath = Filelocation + possFilename;
            return File(fullPath,  System.Net.Mime.MediaTypeNames.Application.Octet, possFilename);

        }
        catch (Exception ex)
        {
            throw ex;
        }

2 个答案:

答案 0 :(得分:2)

您无法使用ajax以这种方式下载文件。 您需要做的是为网格中的每个项目生成正常的下载链接,例如:

@Html.ActionLink("Download", "DownloadIndex", "Home", new { possID = "123" }, null)

Home是控制器的名称,您必须为我的示例中的每个项目而不是硬编码的possID动态添加123

答案 1 :(得分:1)

在您的代码中,您使用ajax下载文件,然后在'/DownloadIndex/Poss'

之后重定向到包含完整文件的网址

您可能只想重定向到该文件,而根本不使用Ajax:

<script>
    function DownloadIndexController(possID) {
        window.location = '/DownloadIndex/Poss?possID=' + possID;
    }
</script>