Heim > Backend-Entwicklung > C++ > Wie streame oder lade ich Dateien von Remote-URLs in ASP.NET herunter?

Wie streame oder lade ich Dateien von Remote-URLs in ASP.NET herunter?

Linda Hamilton
Freigeben: 2025-01-06 08:09:41
Original
769 Leute haben es durchsucht

How to Stream or Download Files from Remote URLs in ASP.NET?

Dateien von Remote-URLs in ASP.NET streamen oder herunterladen

Problem:

Sie Sie müssen eine Datei von einer Remote-URL streamen oder herunterladen und sie als Dialogfeld „Speichern unter“ im Browser anzeigen. Das Verzeichnis der Datei ist jedoch virtuell, sodass mit herkömmlichen Methoden wie Server.MapPath nicht darauf zugegriffen werden kann.

Lösung:

Verwenden Sie HttpWebRequest, um die Datei von der URL und dem Stream abzurufen es an den Kunden zurück. Mit diesem Ansatz können Sie mit Dateien arbeiten, auf die nur über eine URL zugegriffen werden kann.

Hier ist ein Codebeispiel:

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

    //This controls how many bytes to read at a time and send to the client
    int bytesToRead = 10000;

    // Buffer to read bytes in chunk size specified above
    byte[] buffer = new Byte[bytesToRead];

    // The number of bytes read
    try
    {
        //Create a WebRequest to get the file
        HttpWebRequest fileReq = (HttpWebRequest) HttpWebRequest.Create(url);

        //Create a response for this request
        HttpWebResponse fileResp = (HttpWebResponse) fileReq.GetResponse();

        if (fileReq.ContentLength > 0)
            fileResp.ContentLength = fileReq.ContentLength;

        //Get the Stream returned from the response
        stream = fileResp.GetResponseStream();

        // prepare the response to the client. resp is the client Response
        var resp = HttpContext.Current.Response;

        //Indicate the type of data being sent
        resp.ContentType = MediaTypeNames.Application.Octet;

        //Name the file 
        resp.AddHeader("Content-Disposition", "attachment; filename=\"\"" + fileName + "\"\"");
        resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());

        int length;
        do
        {
            // Verify that the client is connected.
            if (resp.IsClientConnected)
            {
                // Read data into the buffer.
                length = stream.Read(buffer, 0, bytesToRead);

                // and write it out to the response's output stream
                resp.OutputStream.Write(buffer, 0, length);

                // Flush the data
                resp.Flush();

                //Clear the buffer
                buffer = new Byte[bytesToRead];
            }
            else
            {
                // cancel the download if client has disconnected
                length = -1;
            }
        } while (length > 0); //Repeat until no data is read
    }
    finally
    {
        if (stream != null)
        {
            //Close the input stream
            stream.Close();
        }
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie streame oder lade ich Dateien von Remote-URLs in ASP.NET herunter?. 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