Элемент управления FileUpload не сохраняет файл

Я пытаюсь загрузить файл и не могу заставить его работать. У меня есть правильный URL-адрес сайта и подпапки. Я также пробовал fileUploader.FileName и fileUploader.SaveAs. Ни один из них не работает. Это не в UpdatePanel. Любые идеи?

Код позади:

Protected Sub uploader_click(sender As Object, e As EventArgs) Handles btnUpload.Click
 If fileUploader.HasFile Then
    Dim _path As String = Path.Combine("{path to site and folder}", Server.HtmlEncode(fileUploader.PostedFile.FileName))
    Try
      fileUploader.PostedFile.SaveAs(_path)
    Catch ex As Exception
      Response.Write(ex.ToString)
    End Try
 Else
  Response.Write("No File")
 End If
End Sub 

Новый код, мне нужно получить родительскую папку, чтобы открыть подпапку:

  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Server.MapPath("~"), "subfolder", filePath)

_path = \\{server blah}\{site}\webroot

Теперь ошибки нет, но и файл не загружается???


person OneFineDay    schedule 28.11.2013    source источник
comment
Определить не работает? Исключение? Нет опубликованного файла?   -  person Yuriy Galanter    schedule 28.11.2013
comment
Он ничего не печатает в Reponse.Write, не сохраняет файл.   -  person OneFineDay    schedule 28.11.2013
comment
Можете ли вы поставить точку останова на IF и следовать ей шаг за шагом, чтобы увидеть, что происходит?   -  person Yuriy Galanter    schedule 28.11.2013
comment
Если я протестирую его на локальном хосте, все будет хорошо работать с локальными папками.   -  person OneFineDay    schedule 28.11.2013
comment
Если он отлично работает на локальном хосте и не работает на хосте, то наиболее вероятной причиной будут права доступа к файлам. Также щелкните правой кнопкой мыши страницу, чтобы просмотреть исходный код после отправки файла. Вы можете не увидеть ошибку, написанную response.write, так как страница содержит много html и все такое.   -  person Subin Jacob    schedule 28.11.2013
comment
Теперь я получаю сообщение об ошибке Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'., и это похоже на то, что путь должен быть - что дает?   -  person OneFineDay    schedule 28.11.2013


Ответы (3)


Вы должны установить права доступа к файлам, если вы находитесь на хостинг-провайдере. Если вы используете виртуальный хостинг, то есть варианты сделать это. Если у вас есть доступ к IIS, то вы можете сделать это самостоятельно.

person Subin Jacob    schedule 28.11.2013
comment
Держу пари, что нет, я посмотрю. - person OneFineDay; 28.11.2013
comment
У меня есть доступ к IIS, что мне нужно сделать? - person OneFineDay; 28.11.2013
comment
Если вы уверены, что проблема не в этом, то отключите пользовательский режим ошибок в веб-конфигурации и посмотрите ошибку, если она есть. - person Subin Jacob; 28.11.2013
comment
Я включил эту папку в браузере каталогов - она ​​была отключена. Однако после этого никаких изменений. - person OneFineDay; 28.11.2013
comment
Не знаю, что вы имеете в виду под своим последним комментарием. Я не знаю, как отлаживать опубликованный сайт. Локальный хост работает нормально. - person OneFineDay; 28.11.2013
comment
Как проверить, является ли это ReadOnly? - person OneFineDay; 28.11.2013
comment
Для какого пользователя вы дали разрешение? вы должны дать разрешение пользователям IIS. Давать разрешение любому другому пользователю не имеет никакого смысла. Также попробуйте дать разрешение всем пользователям. - person Subin Jacob; 28.11.2013
comment
Я не понимаю, как установить права доступа к файлам, извините, новичок в IIS. - person OneFineDay; 28.11.2013
comment
Вы имеете в виду в самом файле? - person OneFineDay; 28.11.2013
comment
Если вы пытаетесь получить доступ к файлу, то file. Не будет никакой ошибки, потому что ваш код безопасен внутри блока try catch. удалите эту попытку поймать и увидеть ошибку. Ошибка приведет вас в правильном направлении. Если сайт на хостинге и не приватный дайте ссылку, могу проверить. - person Subin Jacob; 28.11.2013
comment
stackoverflow.com/questions/14934006 / - person Subin Jacob; 28.11.2013
comment
Вы должны установить разрешение для IIS IUSERS.. asp.net/mvc/tutorials/deployment/ - person Subin Jacob; 28.11.2013
comment
В IIS .Net Roles были отключены, а .Net Users имеет ошибку и не загружается. - person OneFineDay; 28.11.2013
comment
Теперь я получаю сообщение об ошибке Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'., и это похоже на то, что путь должен быть - что дает? - person OneFineDay; 28.11.2013
comment
Используйте 1_. Я надеюсь, что подпапка - это виртуальный путь. т.е. www.вашдомен.com/подпапка - person Subin Jacob; 28.11.2013

Измените свою третью строку следующим образом

Dim _path As String = Path.Combine(Server.MapPath("{Relative url of your folder within your project}"), Server.HtmlEncode(fileUploader.PostedFile.FileName))

Относительный URL должен быть примерно таким:

"~/folder/Folder2//"  

person Madhan Sekar    schedule 28.11.2013
comment
Теперь я получаю сообщение об ошибке Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'., и это похоже на то, что путь должен быть - что дает? - person OneFineDay; 28.11.2013

Наконец-то это сработало, должна быть задержка между публикацией и использованием новых файлов - на основе облака. Он работает, как и ожидалось, с этим путем.

If fileUploader.HasFile Then
  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Directory.GetParent(Server.MapPath("~")).FullName, "subfolder", filePath)
  Try
    fileUploader.PostedFile.SaveAs(_path)
  Catch ex As Exception
    lb.Text = ex.Message
  End Try
Else
  lb.Text = "No File!"
End If

Спасибо всем за помощь.

person OneFineDay    schedule 28.11.2013