2011-06-06 145 views
0

我在應用程序中遇到問題。 我在應用程序中有一些部分,用戶可以從excel文件中下載數據。代碼在本地工作絕對正常,Means文件在每個瀏覽器的本地正確下載。但是,當我們從測試或現場服務器的節目下載文件的彈出與下面的錯誤在Firefox中下載文件時發生錯誤

「C:\用戶\ PHT〜1.AMI \應用程序數據\本地的\ 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"); 
     } 

任何幫助表示讚賞。 謝謝

回答

1

你有一些FF下載管理器擴展?

無論如何,這個問題通常發生在您的安全軟件停止下載並重新開始時。

如果文件正在下載到您的臨時文件夾,則FF可能在訪問此文件夾時遇到問題並恢復下載。

另一種解決方案可能是關閉FF並從配置文件夾中刪除此文件:「compreg.dat」。

來源: http://kb.mozillazine.org/Source_file_could_not_be_read

+0

感謝您的答覆elad,我也檢查這篇文章。我已找到配置文件的路徑爲「C:\ Users \ pht」。amits \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles「,但在配置文件夾下有兩個名爲'7w8z2coa.default'和'v674fnkk.default'的文件夾,哪裏可以找到」compreg.dat「文件? – 2011-06-06 10:42:05

+0

Thanks,Its爲我工作。 – 2011-06-06 11:11:21

0

永遠不要硬編碼的網址。使用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"); 

當你的應用程序部署現場服務器上有需要附加的應用程序的名稱。所以,正確的網址是:中

/AppName/Product/ExportToExcel?... 

代替:

/Product/ExportToExcel?... 

這就是爲什麼使用URL時,你應該總是使用URL傭工的原因。

+0

好的,這是錯誤的原因?我正在查看與我的代碼相同的內容。 – 2011-06-06 10:26:06

+0

@Amit,這可能是其中一個原因。您的代碼也可能存在其他問題。不幸的是,你沒有顯示你的控制器動作,所以我不可能進一步幫助你。 – 2011-06-06 10:28:39

+0

我已經添加了上面的控制器。請看看並讓我知道。謝謝 – 2011-06-06 10:37:56

0

我得到了以下code.By相同eror它被註釋解決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()); 
       } 
      } 
    } 
相關問題