2010-09-01 8 views

Répondre

5

Vous ne pouvez pas le faire.
Tout ce que vous pouvez faire est d'écrire le contenu du fichier à la réponse avec MIME correcte en-tête (par exemple "texte/plain") et le navigateur client ouvrira les données texte avec visionneuse configurée pour le type MIME fourni.

<%@ Page language="vb" runat="server" explicit="true" strict="true" %> 
2 <script language="vb" runat="server"> 
3 Sub Page_Load(Sender As Object, E As EventArgs) 
4  Dim strRequest As String = Request.QueryString("file") '-- if something was passed to the file querystring 
5  If strRequest <> "" Then 'get absolute path of the file 
6   Dim path As String = Server.MapPath(strRequest) 'get file object as FileInfo 
7   Dim file As System.IO.FileInfo = New System.IO.FileInfo(path) '-- if the file exists on the server 
8   If file.Exists Then 'set appropriate headers 
9    Response.Clear() 
10    Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name) ' comment this line if needed 
11    Response.AddHeader("Content-Length", file.Length.ToString()) 
12    Response.ContentType = "application/octet-stream" 'this is MIME type 
13    Response.WriteFile(file.FullName) 
14    Response.End 'if file does not exist 
15   Else 
16    Response.Write("This file does not exist.") 
17   End If 'nothing in the URL as HTTP GET 
18  Else 
19   Response.Write("Please provide a file to download.") 
20  End If 
21 End Sub 
22 </script> 

http://www.xefteri.com/articles/show.cfm?id=8

Voici légèrement modifié le code C# exemple

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"%> 
<script language="cs" runat="server"> 
    public void Page_Load(object sender, EventArgs e) 
    { 

     byte[] buffer; 
     using (var memoryStream = new System.IO.MemoryStream()) 
     { 
      buffer = Encoding.Default.GetBytes("Hello StackOverflow"); //Dummy data 
      memoryStream.Write(buffer, 0, buffer.Length); 
      Response.Clear(); 
      Response.AddHeader("Content-Disposition", "attachment; filename=hello.txt"); //This wil force browser to silently download file. you can comment this line to see difference 
      Response.AddHeader("Content-Length", memoryStream.Length.ToString()); 
      Response.ContentType = "text/plain"; //This is MIME type 
      memoryStream.WriteTo(Response.OutputStream); 
     } 
     Response.End(); 

    } 
</script> 
+0

j'ai trouvé le code ci-dessous: MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter (ms); Sw.WriteLine ("Ceci est un texte de test"); System.Diagnostics.Process.Start ("notepad.exe", "FileNmae"); mais System.Diagnostics.Process.Start a besoin d'un nom de fichier ... comment puis-je faire ce travail? thnaks – LostLord

+0

Comment faire une nouvelle ligne dans les commentaires? – LostLord

+0

@LostLord votre code exécutera nodepad sur le serveur, pas sur le client :) –

Questions connexes