Метод SaveAs настроен так, чтобы требовать корневой путь, а путь "fp" не укоренен
Я делаю загрузчик изображений в Asp.net, и я даю следующий код под моими элементами управления:
string st;
st = tt.PostedFile.FileName;
Int32 a;
a = st.LastIndexOf("\\");
string fn;
fn = st.Substring(a + 1);
string fp;
fp = Server.MapPath(" ");
fp = fp + "\\";
fp = fp + fn;
tt.PostedFile.SaveAs("fp");
Но при загрузке или сохранении изображения появляется сообщение об ошибке, что метод SaveAs настроен на необходимость корневого пути, а путь "fp" не внедрен.
Итак, пожалуйста, помогите мне в чем проблема.
Ответы
Ответ 1
Я подозреваю, что проблема заключается в том, что вместо переменной fp
вы используете строку "fp". Здесь фиксированный код, также сделанный (IMO) более читабельным:
string filename = tt.PostedFile.FileName;
int lastSlash = filename.LastIndexOf("\\");
string trailingPath = filename.Substring(lastSlash + 1);
string fullPath = Server.MapPath(" ") + "\\" + trailingPath;
tt.PostedFile.SaveAs(fullPath);
Вы также должны рассмотреть возможность изменения предпоследней строки на:
string fullPath = Path.Combine(Server.MapPath(" "), trailingPath);
Вы также можете подумать о том, что произойдет, если опубликованный файл будет использоваться/вместо\в имени файла... например, если он будет отправлен из Linux. Фактически, вы могли бы изменить все первые три строки на:
string trailingPath = Path.GetFileName(tt.PostedFile.FileName));
Объединив их, получим:
string trailingPath = Path.GetFileName(tt.PostedFile.FileName));
string fullPath = Path.Combine(Server.MapPath(" "), trailingPath);
tt.PostedFile.SaveAs(fullPath);
Многое более чистое, ИМО:)
Ответ 2
Если вы хотите сохранить загруженный файл в значение fp, просто передайте его, не помещайте его в кавычки:
tt.PostedFile.SaveAs(fp);
Ответ 3
Когда я читал заголовок вопроса, я думал, что похоже, что вы разместили кавычки вокруг имени переменной. Не совсем полагая, что это так, я открыл вопрос, чтобы прочитать его, но это действительно так...
Ответ 4
Я столкнулся с той же проблемой. Проблема заключается в том, что вы не указали путь к серверу, который должен сохранить файл. И вот, наверное, более простой ответ:
string fileName = tt.PostedFile.FileName;
string savePath = Server.MapPath("Path/Of/The/Folder/Comes/Here/") + fileName);
tt.PostedFile.SaveAs(savePath);
Это все! Коды удачи!
Ответ 5
Мы не можем использовать метод SaveAs для прямой записи на FTP-сервер.
Для вышеуказанного метода поддерживаются только локальные пути и пути UNC.
Чтобы сохранить его на FTP, используйте класс FtpWebRequest.
Вы получите полную информацию об этом в том же типе ответов на вопрос в social.msdn.
Пожалуйста, перейдите по ссылке.. и вы сможете решить проблему.
введите ссылку здесь
- спасибо за ответ от Jesse HouwingXPirit (MCC, Partner, MVP)
Ответ 6
Используйте Server.MapPath()
:
fileUploader.SaveAs(Server.MapPath("~/Images/")+"file.jpg");