Heim > Backend-Entwicklung > C++ > Wie streame und veranlasse ich den Download einer Datei von einer URL in ASP.NET?

Wie streame und veranlasse ich den Download einer Datei von einer URL in ASP.NET?

Patricia Arquette
Freigeben: 2025-01-06 08:06:41
Original
220 Leute haben es durchsucht

How to Stream and Prompt Download of a File from a URL in ASP.NET?

Herunterladen und Streamen von Dateien von URLs in ASP.NET

Frage:

Wie kann eine Datei von einem gestreamt werden? URL und werden zum Speichern aufgefordert Browser?

Hintergrund:

In diesem Szenario wird eine Datei in einem virtuell zugeordneten Verzeichnis gespeichert, sodass über Server.MapPath nicht darauf zugegriffen werden kann. Das Ziel besteht darin, die Datei zu streamen und dabei eine Web-URL anstelle eines Serverdateipfads zu übergeben.

Lösung:

Um dieses Problem zu lösen, kann HttpWebRequest zum Abrufen verwendet werden Laden Sie die Datei von der URL herunter und streamen Sie sie zurück zum Client.

// Create stream for the file
Stream stream = null;

// Chunk size for reading bytes
int bytesToRead = 10000;

// Buffer for reading bytes
byte[] buffer = new Byte[bytesToRead];

try
{
    // HTTP request to get the file
    HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);

    // HTTP response for the request
    HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();

    // Get response stream
    stream = fileResp.GetResponseStream();

    // Client response object
    var resp = HttpContext.Current.Response;

    // Indicate data type
    resp.ContentType = "application/octet-stream";

    // File name
    resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

    // File size
    resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());

    int length;
    do
    {
        // Client connected?
        if (resp.IsClientConnected)
        {
            // Read data into buffer
            length = stream.Read(buffer, 0, bytesToRead);

            // Write data to output stream
            resp.OutputStream.Write(buffer, 0, length);

            // Flush data
            resp.Flush();

            // Clear buffer
            buffer = new Byte[bytesToRead];
        }
        else
        {
            // Cancel if client disconnected
            length = -1;
        }
    } while (length > 0);
}
finally
{
    // Close input stream
    if (stream != null)
        stream.Close();
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie streame und veranlasse ich den Download einer Datei von einer URL in ASP.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage