Ich versuche, einen Teil einer Datei in C# mit einem HttpWebRequest
herunterladen, und zwar erfolgreich, aber nur zu einem gewissen Grad. Während meine Methode funktioniert gut mit textbasierten Dateien (zB. .txt
, .php
, .html
, etc.) scheint es nicht freundlich zu anderen Dingen wie .jpg
, .png
, usw. zu spielen, das ein Problem ist, weil es herunterladen sollte einfach gut, unabhängig vom Dateityp (Es ist nur ein Download, nicht etwas, um die Datei zu öffnen, so Dateityp ist irrelevant).Laden Sie einen Teil einer Datei mit HttpWebRequest ohne Header
Das Problem ist, beim Herunterladen von Text-basierten Dateien, es spielt nicht so gut mit anderen Dateitypen. Zum Beispiel habe ich versucht, die Methode für eine .jpg
, und es hatte zusätzliche Daten am Anfang der Datei (möglicherweise HTTP Response Header?) Und war etwa 200 KB größer als die tatsächliche Dateigröße.
Ich verwende die folgende Methode, um die Dateien herunterzuladen (Ich habe die URL auf die richtige URL eingestellt (Ja, ich habe achtgeprüft, es ist die richtige URL.), Und ich habe Threads festgelegt 1 (also das Herunterladen der gesamten Datei), die für textbasierte Dateien funktioniert, aber nicht auf andere Dateitypen):
public static string DownloadSector(string fileurl, int sector)
{
string result = string.Empty;
HttpWebRequest request;
request = WebRequest.Create(fileurl) as HttpWebRequest;
//get first 1000 bytes
request.AddRange(sectorSize*sector, ((sector + 1) * sectorSize) - 1);
//request.
Console.WriteLine("Range: " + (sectorSize * sector) + " - " + (((sector + 1) * sectorSize) - 1));
// the following code is alternative, you may implement the function after your needs
using (WebResponse response = request.GetResponse())
{
Console.WriteLine("Content length:\t" + response.ContentLength);
Console.WriteLine("Content type:\t" + response.ContentType);
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
}
return result;
}
so eine Idee, was das Problem ist und wie dieses Problem beheben?
Überprüfen Sie, was die Antwort sagt. – Blorgbeard
Was ist "Sektor?" –
@RobertHarvey "Sektor" ist nur der Teil der Datei zum Download. Wenn es also eine 10-MB-Datei gibt und du 2 Threads verwendest, lädt jeder Thread einen Sektor, wo Sektorgröße = Dateigröße/Threads, aka 2 Sektoren Sektorgröße 5 MB –