将文件从URI格式路径复制到本地路径

时间:2016-09-29 06:36:52

标签: c# python .net ironpython

我正在尝试复制服务器上的文件,而我所拥有的只是它的URI格式路径。
我一直在尝试在C#.NET 4.5中实现复制,但似乎CopyFile不适合处理URI格式 所以我使用了带有shutil的IronPython,但看起来它对URI格式路径也不好。

如何在本地获取该文件?

private string CopyFile(string from, string to, string pythonLibDir, string date)
{
    var dateTime = DateTime.Today;
    if (dateTime.ToString("yy-MM-dd") == date)
    {
       return "";
    }
    var pyEngine = Python.CreateEngine();
    var paths = pyEngine.GetSearchPaths();
    paths.Add(pythonLibDir);
    pyEngine.SetSearchPaths(paths);
    pyEngine.Execute("import shutil\n" +
                     "shutil.copyfile('" + from + "', '" + to + "')");
    return dateTime.ToString("yy-MM-dd");
}

我从xml配置文件中获取所有路径。

2 个答案:

答案 0 :(得分:1)

您可以使用webclient,然后将文件放在特定文件夹中。

using (WebClient wc = new WebClient())
    wc.DownloadFile("http://sitec.com/web/myfile.jpg", @"c:\images\xyz.jpg");

或者您也可以使用:HttpWebRequest,只需要从服务器中读取文件中的内容。

var http = (HttpWebRequest)WebRequest.Create("http://sitetocheck.com");
var response = http.GetResponse();

var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();

答案 1 :(得分:1)

使用Python

import urllib
urllib.urlretrieve("http://www.myserver.com/myfile", "myfile.txt")

urlretrieve

  

如有必要,将URL表示的网络对象复制到本地文件。如果URL指向本地文件,或者存在该对象的有效缓存副本,则不会复制该对象。