2010-08-12 4 views
1

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

server.map("~\\..\\") 

выйти за пределы сервера я получаю эту

исключение не удается использовать ведущий .. для выхода выше верхнего каталога.

есть ли способ, чтобы определить путь вне сервера

пожалуйста помочь ..

ответ

2

Используйте полный путь, например, «C: \ добавления» и убедитесь, что веб-процесс имеет разрешение на запись в эту папку

+0

но когда приложение опубликовано на сервере, может ли сервер определить абсолютный путь, как это? –

+0

Я делаю это без проблем на своих серверах. Я предлагаю вам сохранить путь в файле web.config (раздел appSettings), чтобы вы могли иметь разные пути для dev и производственных серверов. – Ray

+0

Большое спасибо, я думаю, что это решение, пожалуйста, два вопроса (используйте u Server.Map()), как предоставить веб-процессу это разрешение –

0

Я думаю, что вы столкнулись с проблемой из-за вызова server.map (..), не можете ли вы просто использовать жесткий кодированный путь (читайте из конфигурации, конечно). Поэтому используйте что-то вроде «C: \ UploadedFiles». Вам нужно убедиться, что пользователь, на котором работает ASP.NET, имеет права на запись в этот каталог и т. Д.

+0

Большое вам спасибо, можете ли вы дать мне более подробную информацию где в файле конфигурации и что является альтернативой Server.Map() и повторяющийся вопрос: , когда приложение, опубликованное на сервере, может ли сервер идентифицировать абсолютный путь, подобный этому? –

1

Это полностью описано в документации Telerik для этого контроля можно найти here. Вкратце:

[ASP.NET] RadUpload декларация

<telerik:RadUpload ID="RadUpload1" Runat="server" /> 
<asp:Button Runat="server" ID="Button1" Text="Submit" 
    OnClick="Button1_Click" /> 

[C#] Нажмите обработчик события

using Telerik.Web.UI; 
... 
protected void Button1_Click(object sender, System.EventArgs e) 
{ 
    foreach (UploadedFile f in RadUpload1.UploadedFiles) 
    { 
     f.SaveAs("c:\\uploaded files\\" + f.GetName(), true); 
    } 
} 
+0

, но когда приложение опубликовано на сервере, может ли сервер определить абсолютный путь, как это? –

+0

Конечно, Server.MapPath просто берет путь к форме «~/directory/directory /» и преобразует его в «C: \ Inetapp \ www \ directory \ directory». – Lazarus

+0

Большое вам спасибо, но я не знаю, почему мой руководитель группы говорит мне (не используйте абсолютные пути в своем приложении, так как сервер не может их распознать, он говорит мне использовать Server.Map() вместо этого, но в этой проблеме я хочу загрузить за пределы сервера, и этот метод преобразует путь, который будет на сервере) –

0

Я использую Internet Explorer 8, и были подобные проблемы. Я могу загрузить с сервера, на котором размещена страница загрузки, в IIS7. Я мог бы также загружать с другого сервера, но в том же домене, что и веб-сервер (на котором размещена страница загрузки). Оба они работали.

Но загрузка с ПК, который не находился в домене, не загружался и выдавал 500 ошибок. Я, наконец, добавил сайт загрузки в Internet Explorer к доверенным сайтам, и он отлично работал. :)

До этого я проверял права на папки и т. Д., И все было в порядке. Также были проблемы размера, то есть блог, который сказал, что я должен добавить:

<requestLimits maxAllowedContentLength="2000000000" /> <!-- bytes --> 
</requestFiltering> 

в файл applicationHost.config на веб-сервер в месте C:\windows\system32\inetsrv\config\

Кроме того, в IIS7 я также должен был проверить свойства Asp в диспетчере серверов для веб-сайта, на котором загружается страница, изменил предел Limit Properties \ Maximum Requesting Entity Body Limit, чтобы соответствовать размеру в файле applicationHost.config.

Это классический веб-сайт asp.

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