c# - 如何从共享点服务器下载 excel 文件?
问题描述
我有一个项目(c# 控制台应用程序),我想通过 URL 自动下载一个带有登录凭据的 excel 文件。
我一直在使用网络客户端自动下载文件,我收到的只是一个 html 页面作为响应,通知我登录该站点(我已经在 Chrome 中运行它。)
private static string url = "[the whole url link to the file, deleted for privacy]";
public void test()
{
const string username = "[mail]";
const string password = "[password]";
var securedPassword = new SecureString();
foreach (var c in password.ToCharArray())
{
securedPassword.AppendChar(c);
}
var credentials = new SharePointOnlineCredentials(username, securedPassword);
DownloadFile(url, credentials, @"C:\Documents\ExcelFilesSinc\test.xlsx");
}
private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl)
{
using (var client = new WebClient())
{
client.Credentials = credentials;
string _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgent);
client.DownloadFile(webUrl, fileRelativeUrl);
}
}
这样,文件就生成了,但是里面保存的整个内容是一个HTML页面,需要我登录微软。有什么建议么?
解决方案
您可以尝试为基本身份验证添加标头,例如
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.Headers.Add("User-Agent: Other");
client.Credentials = credentials;
另请参阅: 从 SharePoint 365 下载文件
推荐阅读
- winforms - 配对 BLE 设备
- string - POSIX sh:如何仅使用 shell 将整个文件读入单个字符串,同时在原始文件中保留空格和换行符?
- javascript - 从颜色选择器 Three.js 中选择颜色
- git - 如何从 .gitignore 子文件夹中排除所有扩展名(但不包括 PHP 和 JS)?
- php - PHP 如何在 csv 文件中打印数组?
- mariadb - MariaDB 生成列 vs. 内置函数,哪个更快?
- elasticsearch - 估计弹性搜索索引大小的最佳方法
- c# - 如何从实体框架数据库中获取包含在类中的项目列表
- php - 如果不使用 mysqli_multi_query,SQL 注入将无法工作
- css - PrimeNG 日历打开 Z 索引错误