9

これは私のコードで、docx ファイルを何時間もダウンロードしようとしています。しかし、成功しません。私が遅れているかもしれないところには、ちょっとしたヒントが必要です。

if (File.Exists(sTempPath + sCreateFileName))
            {
                FileInfo file =new FileInfo(sTempPath + sCreateFileName);
                Response.ClearContent();
                // LINE1: Add the file name and attachment, which will force the open/cancel/save dialog to show, to the header
                Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
                // Add the file size into the response header
                Response.AddHeader("Content-Length", file.Length.ToString());
                // Set the ContentType                        
                Response.ContentType = ReturnExtension(file.Extension.ToLower());
                // Write the file into the response (TransmitFile is for ASP.NET 2.0. In ASP.NET 1.1 you have to use WriteFile instead)
                Response.TransmitFile(sTempPath + sCreateFileName);
                // End the response
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            } 

戻りコンテンツ タイプは、docx ファイルのコンテンツ タイプを示します。

"application/ms-word"

ここで、sTempPath+sCreateFileName がファイルのパス全体です。

更新: コンテンツタイプを試しました:

application/vnd.openxmlformats-officedocument.wordprocessingml.document

これは機能していません。

4

3 に答える 3

3

このコードを試してください

 string FileName = Path.Combine(Server.MapPath("~/physical folder"), attFileName);
            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearContent();
            response.Clear();

     Response.AddHeader("Content-Disposition", string.Format("attachment; filename = \"{0}\"", System.IO.Path.GetFileName(FileName)));
            response.TransmitFile(FileName);
            response.Flush();
            response.End();
于 2013-08-23T07:56:32.603 に答える