ASP .NET неверный путь - PullRequest
       9

ASP .NET неверный путь

2 голосов
/ 03 ноября 2010

У меня есть веб-страница, которая запрашивает у пользователя файл Excel с помощью элемента управления fileupload.Затем он читает файл в таблицу данных с использованием OleDbConnection, а затем запускает другой код с этими данными.Когда я тестирую в Visual Studio, все работает нормально.Например, я могу найти файл 'g: \ myfiles \ upldtest.xls', он находит файл, читает его и код работает.Когда я пытаюсь запустить его на нашем веб-сервере, я получаю сообщение об ошибке, когда он пытается создать OleDBConnection, говоря, что он пытается создать OleDbConnection, а путь 'g: \ myfiles \ upldtest.xls' неверен.

Я пытался использовать ManagementObjectSearcher для преобразования пути строки подключения в UNC (\\ MyDataServer \ myfiles вместо g: \ myfiles).Когда я проверяю его, он показывает правильный путь, но когда я загружаю страницу на веб-сервер, я все равно получаю путь 'g: \ myfiles \ upldtest.xls' неверный.

Код, который я использую дляопределите требуемое имя файла:

string tname = FileUpload1.PostedFile.FileName;// имя файла и путь

строка gname = tname.Substring (tname.LastIndexOf ("\\") + 1);// Путь

Есть идеи, что мне не хватает?Мой контракт требует от меня использования VS2005 и .NET Framework 2.0, поэтому я не могу использовать ничего более нового.Заранее благодарим за помощь.

Ответы [ 2 ]

3 голосов
/ 04 ноября 2010

HttpPostedFile.FileName возвращает полное имя файла на клиентском компьютере .

Вам нужно позвонить SaveAs () , чтобы фактически сохранить файл на сервере:

using System.IO;

string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
string filepath = Path.Combine(@"X:\Your\Own\Upload\Folder", filename);
FileUpload1.PostedFile.SaveAs(filepath);

// Now use `filepath` as your data source.

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

2 голосов
/ 04 ноября 2010

Вам также следует знать о кросс-браузерных проблемах. IE отправляет полный путь к серверу при загрузке файла, а Firefox / Chrome - нет.

...