Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > путь в mappath указан неверно(закачивание файла с


Автор: Ivankult 8.9.2008, 18:20
Проблема передачи файла от клиента на сервер. 
if (upload_file.PostedFile != null)
{
string filename = upload_file.FileName.ToString();
string myfile = System.IO.Path.GetFileName(filename);
try
{
upload_file.PostedFile.SaveAs(Server.MapPath(Sessi on["user"].ToString()) + "" + myfile);
}
catch (UnauthorizedAccessException)
{

}
}
ошибка: путь в MapPath указан неверно. как правильно? и куда будет сохраняться файл?

Sessi on["user"].ToString() равно null


Автор: pr0fess0r 9.9.2008, 10:17
Я наверно ошибаюсь или этого не знаю, но это Server.MapPath(Sessi on["user"].ToString()) вроде бред.
Создай папку например upload, укажи ее. Если надо в не делай папки с именами юзеров.

Автор: TaganMorgul 9.9.2008, 13:28
Server.MapPath("~") вернёт вам физ путь к корню вашего сайта, а уж потом от этого и нужно плясать. 

ЗЫ
Посмотрите ещё класс VirtualPathUtility - содержит много полезных в этом случае методов.

Автор: Ivankult 9.9.2008, 16:24
ээ, мне надо путь к файлу у юзера на компьютере, откуда передавать файл

Автор: pr0fess0r 10.9.2008, 11:38
ну тагда вот HttpContext.Request.Files["id"] - содержит имя переданого файла и его содержимое и т.д.
Сервер сам не лазит к юзеру за файлом по указаному пути, файл передает клиентская сторона.

Автор: Mymik 15.9.2008, 16:12
Цитата(Ivankult @  9.9.2008,  16:24 Найти цитируемый пост)
ээ, мне надо путь к файлу у юзера на компьютере, откуда передавать файл 

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

Автор: Zakonnic 17.9.2008, 11:36
Та не, ну что вы прям. Человек использовал компонент FileUpload, но видимо скопировал код откуда-то и не в курсе, что это за Session["user"]. С этим компонентом путь у юзера знать не обязательно, upload_file.PostedFile сразу дает доступ к файлу. Остается лишь сохранить его на сервере и занести в базу. И вот тут начинается пляска с правами (под админом, небось, сидите ;) ). Код то простой:
Код

try
{
upload_file.PostedFile.SaveAs(Server.MapPath("~/ПапкаКудаСкладыватьФайлы/") + upload_file.FileName);
}
catch (UnauthorizedAccessException)
{

}

А вот разрулить права, чтобы он работал (особенно при имперсонализации) это уже совсем другая история)

Автор: Mymik 17.9.2008, 12:23
Цитата(Zakonnic @  17.9.2008,  11:36 Найти цитируемый пост)
А вот разрулить права, чтобы он работал (особенно при имперсонализации) это уже совсем другая история)

потому, имхо, файлы в базу... ибо замучаешься удалять, редактировать и прикреплять файлы к пользователям smile

Автор: Idsa 17.9.2008, 12:36
Цитата(Mymik @  17.9.2008,  16:23 Найти цитируемый пост)
потому, имхо, файлы в базу...

Ненене. Не надо файлы в базу smile Лучше уж с правами помучиться.

Автор: Mymik 18.9.2008, 12:22
Цитата(Idsa @  17.9.2008,  12:36 Найти цитируемый пост)
Ненене. Не надо файлы в базу smile Лучше уж с правами помучиться.

ИМХО на любителя... при условии, что пользователь будет удалять, редактировать, просматривать файл, да еще и со своим именем... Тут слишком много придется мучаться с названиями, разграничениями доступа к файлам и чтобы они друг-друга не затерли. А так, в базу залил, настроил foreign key constraint и бог тебе в помощь smile Хотя конечно мнение о том, что файлы должны храниться в файловой системе хорошо... удалять и перемещать файлы быстрее... но мучиться с механизмом перемещения :( Короче я пока что не вижу особых плюсов хранения файлов в файловой системе, а не в базе данных... Хотя может быть у меня небыло таких проектов, где я могу это увидеть...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)