2013-07-30 5 views
4

Я хочу загрузить файл изображения в папку проекта, но у меня есть ошибка в моем catch: Не удалось найти часть пути 'C: \ project \ uploads \ logotipos \ 11111 \'.Как сохранить загруженный файл? C# mvc

Что я делаю неправильно? Я хочу сохранить этот образ, загруженный моим клиентом в этой папке ... эта папка существует ... ах, если я поставлю точку останова для folder_exists3, которая показывает мне истинное значение!

Мой код:

try 
{ 
    var fileName = dados.cod_cliente; 
    bool folder_exists = Directory.Exists(Server.MapPath("~/uploads")); 
    if(!folder_exists) 
     Directory.CreateDirectory(Server.MapPath("~/uploads")); 
    bool folder_exists2 = Directory.Exists(Server.MapPath("~/uploads/logo")); 
    if(!folder_exists2) 
     Directory.CreateDirectory(Server.MapPath("~/uploads/logo")); 
    bool folder_exists3 = Directory.Exists(Server.MapPath("~/uploads/logo/" + fileName)); 
    if(!folder_exists3) 
     Directory.CreateDirectory(Server.MapPath("~/uploads/logo/"+fileName)); 

    file.SaveAs(Server.MapPath("~/uploads/logo/" + fileName+"/")); 
} 
catch(Exception e) 
{ 
} 

Кто-то знает, что я сделал не так?

Спасибо :)

+0

Но вы не проверять, если '\ загрузки \ logotipos \ 11111 \' существует только для 'дата загрузки/логотипа /' – wudzik

+0

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

+1

'file.SaveAs (Server.MapPath (" ~/uploads/logo/"+ fileName)); ' – Reniuz

ответ

16

Попробуйте это:

string targetFolder = HttpContext.Current.Server.MapPath("~/uploads/logo"); 
string targetPath = Path.Combine(targetFolder, yourFileName); 
file.SaveAs(targetPath); 
+0

да! Хороший человек! : D Спасибо, человек, ты спас мой день! : D –

+0

Точное кодирование для вас –

+0

для вас тоже :)) –

0

Ваша ошибка заключается в следующем:

bool folder_exists3 = Directory.Exists(Server.MapPath("~/uploads/logo/" + fileName)); 
if(!folder_exists3) 
    Directory.CreateDirectory(Server.MapPath("~/uploads/logo/"+fileName)); 

Вы проверить, если каталог существует, но вы должны проверить, существует ли файл:

File.Exists(....); 
+0

, но я не хочу проверять, существует ли файл, но да, если папка существует –

+0

, тогда удалите эту инструкцию. Вы проверяете папку с 'folder_exists2' – SynerCoder

+0

Мне нужен этот шаг для будущей загрузки ... и программе не нужно создавать снова ту же папку –

0

Вынуть последняя часть пути, чтобы сэкономить у вас есть дополнительные «/»

Это должно быть

file.SaveAs(Server.MapPath("~/uploads/logo/" + fileName); 

Также у вас нет набора дополнительных файлов.

+0

, к сожалению, это не решает мою проблему, я уже тестирую это и даю мне такая же ошибка! :/ –

+0

C: \ project \ uploads \ logotipos \ 11111 \ это верно ваше сообщение об ошибке? Ну, это отличается от вашего сохранения, поскольку вы ищете \ logo not logotipos. также я забыл скобок - file.SaveAs (Server.MapPath ("~/uploads/logo /") + имя_файла); – AntSpiteri

+0

Я стараюсь изменить ваше предложение, но не работает:/ file.SaveAs (Server.MapPath ("~/uploads/logo /") + имя_файла); Дай мне такую ​​же ошибку! –

0

Вам нужно имя файла

file.SaveAs(Server.MapPath("~/uploads/logo/" + fileName+"/" + your_image_fillename)); 
+0

Я уже изменил, но я получил ту же ошибку ... –