を試してみdownload file via WebClient
ましたが、ファイルからすべてのバイトが返されたわけではありません。Original file has 45Kb
、download only 8kb
トータルファイルから。ユーザーエージェントヘッダーを追加した後に発生しました。
私のコードは次のとおりです。
using (ZipFile zip = new ZipFile())
{
foreach (KeyValuePair<string, string> i in filesToInclude)
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.UseDefaultCredentials = true;
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
string downloadUrl = SPContext.Current.Site.Url + i.Key;
AppClass.WriteToLog(string.Format("downloadUrl: {0}", downloadUrl));
byte[] img = wc.DownloadData(downloadUrl);
zip.AddEntry(i.Value, img);
}
zip.Save(Response.OutputStream);
}
何かアイデアはありますか?
更新:以前のバージョンでurl
は正しくビルドされません。コードを次のように変更します。
using (ZipFile zip = new ZipFile())
{
foreach (KeyValuePair<string, string> i in filesToInclude)
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.UseDefaultCredentials = true;
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
string downloadUrl = SPContext.Current.Site.Url + i.Key;
Uri uri = new Uri(downloadUrl);
AppClass.WriteToLog(string.Format("downloadUrl: {0}\nUri.AbsoluteUri: {1}", downloadUrl, uri.AbsoluteUri));
byte[] img = wc.DownloadData(uri.AbsoluteUri);
if (!wc.ResponseHeaders.Get(0).Contains("OK"))
{
AppClass.WriteToLog("Unable to donwload the file");
}
zip.AddEntry(i.Value, img);
}
zip.Save(Response.OutputStream);
}
そして今、私は別の問題を抱えています。The remote server returned an error: (403) Forbidden