2010-03-01 4 views
4

Я почесываю голову об этом. Мой сценарий заключается в том, что мне нужно загрузить файл на сервер компании (в папку на c :) с нашего хостинга (совершенно другого сервера). Я не знаю, как я должен это делать. У любого из вас есть советы или код о том, как это делается.Загрузить файл на удаленный сервер, как мне это сделать?

Спасибо Ребята

+0

Вам необходимо запустить какую-либо услугу передачи файлов на целевом сервере, а затем подключиться к ней с клиента (с которого перемещается файл). SFTP (Secure Shell FTP) - хороший выбор, хотя он не поддерживается из коробки. –

+0

Dejan - спасибо, что выбрали мой ответ как «ответ» –

ответ

3

Я бы настроить FTP-сервер (например, один в IIS или стороннего сервера) на компании Server. Если проблема с безопасностью, тогда вы захотите настроить SFTP (безопасный FTP), а не vanilla FTP, поскольку FTP не является изначально безопасным протоколом передачи. Затем создайте службу на сервере хостинга, чтобы получить файл (ы) по мере их поступления и отправить их на сервер компании с помощью FTP-управления C# /. NET. Честно говоря, это должно быть довольно просто.

Обновление: Чтение вашего вопроса, у меня сильное впечатление, что у вас НЕ будет веб-сайта, работающего на сервере компании. То есть, вы делаете не нужен элемент управления загрузкой файлов в своем веб-приложении (или уже знаете, как реализовать тот, который задан в правой панели инструментов веб-страницы). Ваш вопрос, как я понимаю, заключается в том, как получить файл с веб-сервера на сервер компании.

Обновление 2: Добавлена ​​заметка о безопасности. Обратите внимание, что это меньше беспокоит, если серверы находятся в одном и том же субдомене и не будут перенаправляться за пределы сети компании и/или если данные не чувствительны. Сначала я не думал об этом, потому что сейчас я работаю над таким проектом, но наши данные никоим образом не чувствительны.

+0

Вы должны хотя бы упомянуть, что FTP абсолютно небезопасен. –

+0

Где FTP (FTP) полностью небезопасен, FTP может быть в различных формах, включая SFTP, который также называется FTP. Хотя я бы не рекомендовал FTP без дополнительной информации, FTP может быть вполне адекватным методом решения этой ситуации. – GrayWizardx

+0

Я обновил ответ, Мэтью. –

0

Даррена Джонстон Файл управления Загрузить как хорошее решение, как вы найдете в любом месте. Он имеет возможность обрабатывать большие файлы, не влияя на память сервера ASP.NET, и может отображать прогресс загрузки файлов, не требуя зависимости от Flash или Silverlight.

http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/

+0

Я не думаю, что он ищет команду для загрузки файла. Я считаю, что он хочет переместить файл с веб-сервера на сервер компании (который не запускает веб-приложение). –

+0

Да, я был больше на сервере для работы с сервером. но thx в любом случае Роберт –

0

Там не достаточно информации, чтобы сказать всю сценарий хостинга, но у меня есть несколько предложений, которые могли бы вы начали в правильном направлении:

  • Является ли ваш внешний сервер принадлежит другой компании или группе, и вы не можете изменить Это? Если нет, вы можете подумать о том, чтобы разместить процесс на том же компьютере, как в процессе, так и в качестве отдельной службы на машине. Если это не может быть изменено, вы можете подумать о том, чтобы разместить услугу на конечной машине, таким образом, ее место в том же месте, в котором должны появляться файлы.
  • Нужно ли сохранять файлы в синхронизации с процессом? То есть нужно ли их загружать, перемещать и проверять как одну операцию? Если нет, то, вероятно, лучший способ - это отдельный процесс. Отдельный процесс даст вам некоторую гибкость, но помните, что это будет отдельный процесс и отдельный набор кода для управления и работы с
  • Насколько велик файл (ы), который загружается? Они меняются при загрузке? простые файлы, двоичные файлы (zip-файлы, исполняемые файлы и т. д.)? Если файлы маленькие, у вас больше возможностей, чем при больших. Если они достаточно малы, вы можете даже передать их в очередь.

В зависимости от ответов на выше некоторых из них может работать для вас:

  • Использование MSMQ. Это будет работать для простых сообщений в пределах около 3 МБ без лишних хлопот.Он идеально подходит для сообщений, с которыми можно напрямую работать (например, XML).
  • Использовать прямой HTTP-ретранслятор. На хост-машине откройте HTTP-соединение с конечным компьютером и передайте файл. Опять же, это будет работать лучше для небольших файлов (т. Е. Всего лишь несколько КБ, так как это будет сделано в строке)
  • Если у вас есть доступ к главной машине, разверните отдельный процесс на машине, которая строит или собирает файлы и использует любой из перечисленных способов отправить их на машину назначения.
  • Вы можете использовать SCP, FTP (любой формы SFTP и т. Д.) На хост-машине (если у вас есть доступ) или на целевой машине для размещения входящих файлов и использовать пакетный процесс для перемещения файлов. Это будет иметь множество проблем для решения таких задач, как размер файла, синхронизация и синхронизация. Я бы рассматривал это как последнее средство, в зависимости от ситуации.
  • Снова в зависимости от размера сообщения вы также можете использовать слой абстракции, такой как БД, чтобы выступать в качестве промежуточного слоя между двумя машинами. Это будет работать до тех пор, пока две машины могут видеть БД (или другое место хранения) и оба действуют на него. SQL Server Service Broker может использоваться для этой цели (и большинство других продуктов DB предлагают аналогичные продукты).
  • Вы можете посмотреть другие продукты, такие как WSO2 ESB или NServiceBus, чтобы облегчить обмен сообщениями между двумя приложениями и сделать это встроенным.

Надеюсь, это даст вам несколько отправных точек для изучения.

Смежные вопросы