C# 从目录下载文件并运行它

4

使用此代码,我可以下载文件,但我需要知道文件名。是否有任何方法可以下载目录中的任何文件(目录链接:https://www.dropbox.com/sh/koao8dlfpcao8sk/XzDZMfejiF)并运行它?

private void Update_Load(object sender, EventArgs e)
{
        WebClient webClient = new WebClient();
        webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
        webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
        webClient.DownloadFileAsync(new Uri("https://www.dropbox.com/s/6o5kvzr7s0c6mne/Test.txt"), @"C:\Users\Admin\Downloads\Test.txt");
}

2
我建议查看Dropbox API来处理这种类型的事情。https://www.dropbox.com/developers - pilotcam
显然(从链接中可以看出),协议是http,因此Dropbox API将毫无帮助。 - Ventsyslav Raikov
如果那是问题,我不介意更换服务器。 - a1204773
3个回答

4
Dropbox有一个REST API,所以你只需要在适当的URL上进行HTTP GET请求来获取文件夹的内容。查看Dropbox API参考文档中的 /metadata。如果您传递list=true参数,它将给出文件夹的内容,并且您可以解析响应以获取文件名。然后,您可以下载文件。

0

看起来你已经掌握了下载部分。假设这是一个Windows可执行文件,下载完成后,你可以使用Process.Start运行它。

编辑:这个问题似乎提供了一些解决方案。基本上,你需要使用目录URL创建一个HttpWebRequest,然后解析返回的内容以获取该目录中包含的文件列表(可能只有一个文件)。一旦你拥有了这个列表,就可以按照正常方式下载该文件。


我可以用这种方式下载,但我必须知道要下载的文件名... 我需要一种方法来下载目录中的任何文件(我不知道文件名),然后运行该文件(但我不知道文件名)以使用Process.Start。 我只会知道保存目录。 - a1204773

0

当您通过DownloadFileAsync开始下载时,无论如何都需要指定文件名。只需使用该名称并将其传递给MusiGenesis建议的Process.Start即可。


是的,我知道... 我展示了那段代码是为了表明我知道如何下载单个文件,并希望您通过修改这段代码或任何其他方式来下载目录中的未知文件并运行它。 - a1204773
你如何下载未知文件?你需要有URI并决定本地文件名 - 就这样。然后只需使用本地文件名调用Process.Start即可。 - Ventsyslav Raikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接