从Web目录中获取文件

时间:2017-04-02 09:07:45

标签: c# getfiles

我想从http://random.cat/获取随机图像,所以我想使用Directory.GetFiles或类似的东西对它们进行索引,但这不起作用。那么获得Directory.GetFiles的功能的最佳方法是什么,但是对于http://random.cat/i(我认为这是存储图像的地方)?

提前致谢!

3 个答案:

答案 0 :(得分:0)

无法访问到图片数据库,但他们提供了一次api来检索一张图片。

创建基本模型:

public class RandomImage
{
    public string file { get; set; }
}

然后你可以使用WebClient来做到这一点:

public string RandomImage()
{
    string result = null;

    var apiurl = "http://random.cat";

    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(apiurl);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    HttpResponseMessage ResponseMessage = client.GetAsync(apiurl + "/meow").Result; // The .Result part will make this method not async
    if (ResponseMessage.IsSuccessStatusCode)
    {
        var ResponseData = ResponseMessage.Content.ReadAsStringAsync().Result;
        var MyRandomImage = JsonConvert.DeserializeObject<RandomImage>(ResponseData);

        result = MyRandomImage.file; // This is the url for the file
    }

    // Return
    return result;
}

从您的方法中调用该函数:

var MyImage = RandomImage();

答案 1 :(得分:0)

Directory.GetFiles()旨在用于文件系统,而不是用于网址。

This link应该足以让你入门。由于您不知道图片的实际网址,因此您必须parse the page to find it,然后再提出下载请求。

请注意,如果您在特定时间内下载了太多图片,他们可能会阻止您。

编辑:我刚才注意到他们有一个API,这使得一切都变得简单。但它被标记为临时的,所以你要做的就是。

答案 2 :(得分:0)

如前所述,你必须使用HttpClient。我不知道列出所有文件的任何方法,但这也需要在托管该网站的Web服务器中进行设置。