Скачать файлы с помощью asp.net

Есть файл данных и несколько файлов изображений, которые я должен каждую ночь загружать на наши локальные серверы с помощью asp.net. Как лучше всего это сделать?

ОБНОВИТЬ

Хорошо, после просмотра ответов я вижу, что мой первоначальный пост об использовании asp.net - плохой выбор. Как бы вы написали это для консольного приложения на C#. Я не уверен, какие классы я использую для подключения и извлечения файлов с удаленного сервера.

Спасибо


person jumbojs    schedule 19.01.2009    source источник


Ответы (6)


«Как бы вы написали это для консольного приложения на C#».

Создайте консольное приложение C#. Добавьте ссылку на System.Net.


using System;
using System.Net;

namespace Downloader
{
    class Program
    {
        public static void Main(string[] args)
        {
            using (WebClient wc = new WebClient())
            {
                wc.DownloadFile("http://www.mydomain.com/resource.img", "c:\\savedImage.img");
            }
        }
    }
}
person user50612    schedule 19.01.2009

Чтобы загрузить любой файл с удаленного URL-адреса, вы можете использовать WebClient в C # внутри пространства имен System.Net.

публичная песня FileResult (строковая песня) {

        WebClient client = new WebClient();
        var stream = client.OpenRead("http://www.jplayer.org/audio/mp3/Miaow-03-Lentement.mp3");

        return File(stream, "audio/mpeg");

    }

Для загрузки данных каждую ночь вы можете использовать планировщик задач. http://www.quartz-scheduler.net/ может помочь вам в планировании задач

person Manoj Joshi    schedule 20.06.2016

Чтобы делать это каждую ночь, вы должны настроить его как запланированную задачу на своем сервере, чтобы перейти к определенной веб-странице asp.net для выполнения нужного кода.

На вашей странице ASP.NET будет код для выхода и загрузки файла и выполнения любой необходимой обработки.

person TheTXI    schedule 19.01.2009
comment
если вы собираетесь голосовать против, по крайней мере, дайте логическую причину. Если он говорит, что должен сделать это с помощью ASP.NET, вы можете объяснить, как это сделать с помощью ASP.NET, не говоря ему, что он просто делает это неправильно. - person TheTXI; 19.01.2009
comment
Плохое решение. Это напрасно направляет логику через две отдельные парадигмы. Веб-сайты/приложения не должны использоваться для управления логикой службы. Если у вас есть требование только к службе, напишите службу или консольное приложение. - person ; 19.01.2009
comment
Извините, TheTXI, но если программист спрашивает, как использовать неправильную парадигму, чтобы получить то, что ему нужно, я собираюсь предложить ему вместо этого использовать лучшую, более чистую парадигму. Вы не должны подбирать плохое решение проблемы, просто чтобы оставаться в контексте того, что удобно программисту. - person ; 19.01.2009
comment
TheTXI, если вы собираетесь предложить что-то вроде того, чтобы запланированная задача попала на страницу ASP.NET и выполнила ее код, вам лучше предоставить лучшее объяснение того, как это произойдет. В противном случае я не удивлюсь, если за это быстро проголосуют. - person Kon; 19.01.2009

Обычно вы не будете делать это через ASP.NET. Код веб-страницы выполняется только при выполнении запроса HTTP/HTTPS, который обычно инициируется конечными пользователями с помощью веб-браузера или поисковых роботов.

Вы хотите использовать что-то вроде FTP для загрузки файлов и службу Windows для автоматизации инициирования загрузки.


ОБНОВЛЕНО в ответ на обновление вопроса:

Вы можете выполнить простой поиск в Google, чтобы найти множество информации о скачивании через FTP в .NET.

Ознакомьтесь с этой клиентской библиотекой C# FTP.

А вот несколько хороших ссылок по созданию службы Windows в .NET:

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

http://www.developer.com/net/net/article.php/2173801

person Kon    schedule 19.01.2009

Метод DownloadFile в классе System.Net.WebClient, вероятно, является хорошей отправной точкой. Вы даете ему строку URL и имя файла, и он делает все остальное. System.NET.WebClient в MSDN

Вы даже можете установить пользовательские строки агента пользователя и загружать файлы с помощью этого класса.

person tooleb    schedule 19.01.2009

Если вы не можете сделать это с помощью FTP, вы можете использовать HttpWebRequest и HttpWebResponse для выполнения этой работы. Из MSDN:

using System;
using System.Net;
using System.Text;
using System.IO;


    public class Test
    {
        // Specify the URL to receive the request.
        public static void Main (string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);

            // Set some reasonable limits on resources used by this request
            request.MaximumAutomaticRedirections = 4;
            request.MaximumResponseHeadersLength = 4;
            // Set credentials to use for this request.
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

            Console.WriteLine ("Content length is {0}", response.ContentLength);
            Console.WriteLine ("Content type is {0}", response.ContentType);

            // Get the stream associated with the response.
            Stream receiveStream = response.GetResponseStream ();

            // Pipes the stream to a higher level stream reader with the required encoding format. 
            StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);

            Console.WriteLine ("Response stream received.");
            Console.WriteLine (readStream.ReadToEnd ());
            response.Close ();
            readStream.Close ();
        }
    }

/*
The output from this example will vary depending on the value passed into Main 
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/
person thaBadDawg    schedule 19.01.2009