Ошибка при загрузке файла в Firefox - PullRequest
0 голосов
/ 06 июня 2011

У меня проблема с приложением. У меня есть некоторый раздел в приложении, откуда пользователь может загрузить данные в файл Excel. Код работает абсолютно нормально на локальном компьютере, значит, файл загружается корректно на локальном компьютере с каждым браузером. Но когда мы загружаем файл с тестового или живого сервера, он показывает всплывающее окно со следующей ошибкой

"C: \ Users \ РНТ ~ 1.AMI \ AppData \ Local \ Temp \ hXybMbIw.xlsx.part не может быть сохранен, потому что источник файл не может быть прочитан. Попробуйте снова позже или свяжитесь с сервером администратор. "

только в браузере Firefox.

Я использую следующий код для загрузки файла

   function ExportToExcel(isJdl) {
        var url = '/Product/ExportToExcel?isJdl=' + isJdl
                + "&projID=" + _projID
                + "&PlanPages=" + escape($("#PlanPages").val())
                + "&SpecSections=" + escape($("#SpecSections").val())
                + "&Addenda=" + escape($("#Addenda").val())
                + "&HighLite=" + $("#chkHighLite").attr("checked");
        Download(url);
    }

    function Download(url) {
        var win = window.open(url, "DownloadWin", "resizable=0,status=0,toolbar=0,width=600px,height=300px");
        win.focus();
        win.moveTo(100, 100);
    }

Код контроллера следующий: -

public void ExportToExcel(bool isJdl, string projID, string planPages, string specSections, string addenda, string HighLite)
        {
            int pID = int.Parse(projID.Decrypt());
            bool HightLiteVal = false;
            if (!string.IsNullOrEmpty(HighLite))
                HightLiteVal = Convert.ToBoolean(HighLite);

            Highmark.BLL.Models.Project proj = Highmark.BLL.Services.ProjectService.GetByID(pID);


            if (proj != null)
            {
                proj.PlanPages = planPages;
                proj.SpecSections = specSections;
                proj.Addenda = addenda;
                proj.HighLite = HightLiteVal;
                using (OfficeOpenXml.ExcelPackage pck = new OfficeOpenXml.ExcelPackage())
                {

                    OfficeOpenXml.ExcelPackage pck1 = Highmark.BLL.Services.ProjectService.GetExcelFile(isJdl, pck, pID, proj, planPages, specSections, addenda);

                    string name = string.Format("{0}", proj.ProjectName);
                    if (pck1.Workbook.Worksheets.Count > 0)
                    {
                        //Write it back to the client
                        Response.ContentType = "Application/vnd.ms-Excel";

                        //Remove Invalid Character from File Name
                        name = name.RemoveInvalidCharFromFileName();

                        Response.AddHeader("content-disposition", "attachment;   filename=\"" + name + "_HighEST.xlsx\"");
                        Response.BinaryWrite(pck1.GetAsByteArray());
                    }
                }

            }
            else
                Response.Write("Error: Invalid request, please try again");
        }

Любая помощь приветствуется. Спасибо

Ответы [ 3 ]

1 голос
/ 06 июня 2011

Есть ли у вас расширение менеджера загрузок FF?

В любом случае, эта проблема обычно возникает, когда ваша программа безопасности останавливает загрузку, а затем возобновляет ее.

если файл загружается во временную папку, FF может иметь проблемы с доступом к этой папке и возобновлением загрузки.

Другим решением может быть закрытие FF и удаление этого файла: «compreg.dat» из папки профиля.

Источник: http://kb.mozillazine.org/Source_file_could_not_be_read

0 голосов
/ 29 октября 2014

Я получил то же самое сообщение об ошибке в следующем коде. Это разрешается с помощью комментариев Response.Flush (), Response.Close (), Response.End () в моем случае.

public void ExportClentList(string[] DataArray, string ToatalHours)
    {
        using (OfficeOpenXml.ExcelPackage pck = new OfficeOpenXml.ExcelPackage())
            {
                OfficeOpenXml.ExcelPackage excelExportedData = GetBackToClientProjectReport(pck, DataArray, ToatalHours);

                if (excelExportedData.Workbook.Worksheets.Count > 0)
                {
                    Response.ContentType = "Application/vnd.ms-Excel";
                    Response.AddHeader("content-disposition", "attachment;   filename=\"BackToClientProjectReport.xlsx\"");
                    Response.BinaryWrite(excelExportedData.GetAsByteArray());
                    //Response.Flush();
                    //Response.Close();
                    //Response.End();
                }
                else
                {
                    Response.ContentType = "Application/vnd.ms-Excel";
                    Response.AddHeader("content-disposition", "attachment;   filename=\"BackToClientProjectReport.xlsx\"");
                    OfficeOpenXml.ExcelPackage pc1k1 = new OfficeOpenXml.ExcelPackage();
                    ExcelWorksheet ws = pc1k1.Workbook.Worksheets.Add("Sheet1");
                    ExcelRange r = ws.Cells[1, 1];
                    r.Value = "No Record Found";
                    Response.BinaryWrite(pc1k1.GetAsByteArray());
                }
            }
    }
0 голосов
/ 06 июня 2011

Никогда не используйте жесткий код URL.Всегда используйте помощники URL при работе с URL:

var url = '@Url.Action("ExportToExcel", "Product")?isJdl=' + isJdl
            + "&projID=" + _projID
            + "&PlanPages=" + escape($("#PlanPages").val())
            + "&SpecSections=" + escape($("#SpecSections").val())
            + "&Addenda=" + escape($("#Addenda").val())
            + "&HighLite=" + $("#chkHighLite").attr("checked");

Когда ваше приложение развернуто на работающем сервере, есть имя приложения, которое необходимо добавить.Таким образом, правильный URL будет:

/AppName/Product/ExportToExcel?...

вместо:

/Product/ExportToExcel?...

Именно поэтому вы всегда должны использовать помощники URL при работе с URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...