Эта строка пытается прочитать PostedFile
как локальный файл внутри веб-сервера, который не найден для некоторых файлов, поскольку файл не хранится в папке сервера или не существует пути:
e.NewValues["Passport"] = File.ReadAllBytes(fup.PostedFile.FileName);
Вы можете прочитать загруженный файл из PostedFile.InputStream
свойства FileUpload
как Stream
экземпляр и назначить его массиву байтов (предполагается, e.NewValues["Passport"]
- байтовый массив):
var stream = fup.PostedFile.InputStream; // creates the stream
stream.Read(e.NewValues["Passport"], 0, stream.Length);
Кроме того, вместо проверки имени файла вы можете проверить загруженный файл, используя свойства HasFile
и PostedFile.ContentLength
:
if (cv.IsValid && fup.HasFile && fup.PostedFile.ContentLength > 0)
{
var stream = fup.PostedFile.InputStream; // creates the stream
stream.Read(e.NewValues["Passport"], 0, stream.Length);
e.NewValues["PassportImageType"] = fup.PostedFile.ContentType;
}
Если вам нужно сохранить загруженный файл, используйте fup.PostedFile.SaveAs(Path.Combine(@"\path\to\folder", fup.PostedFile.FileName));
, а затем Server.MapPath("~/path/to/folder/filename.jpg")
, чтобы прочитать его.
Похожие проблемы:
Управление загрузкой файлов ASP.NET / VB.NET