C# 更新管理控制器中的图像
我正在尝试更新用户的图像,我正在考虑一种方法,让管理员能够为用户只更新一个图像或两个图像,或者不更新任何图像(配置文件图像和许可证图像)。然而,我得到一个错误,图像是空的。 以下是我在管理控制器中的编辑操作:C# 更新管理控制器中的图像,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我正在尝试更新用户的图像,我正在考虑一种方法,让管理员能够为用户只更新一个图像或两个图像,或者不更新任何图像(配置文件图像和许可证图像)。然而,我得到一个错误,图像是空的。 以下是我在管理控制器中的编辑操作: [HttpGet] public ActionResult EditDriver(int id) { DriversTier tier = new DriversTier(); DriversModel dri
[HttpGet]
public ActionResult EditDriver(int id)
{
DriversTier tier = new DriversTier();
DriversModel driver = tier.getDriverByID(id);
WebImage image = new WebImage();
GetProfileImage(image.driverId);
GetLicenseImage(image.driverId);
return View(driver);
}
[HttpPost]
public ActionResult EditDriver(DriversModel driver, IEnumerable<HttpPostedFileBase> images)
{
if (images!= null) {
var profileImg = images.ElementAt(0);
var licenseImg = images.ElementAt(1);
if (profileImg== null && profileImg.ContentLength<0 && licenseImg != null && licenseImg.ContentLength >0)
{
driver.licenseImgType = licenseImg.ContentType;
string fileName = licenseImg.FileName;
string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
Regex rgx = new Regex(pattern);
//Get the length of the image in bytes and create that array
driver.licenseImg = new byte[licenseImg.ContentLength];
//fill the array of bytes with the image data
licenseImg.InputStream.Read(driver.licenseImg, 0, licenseImg.ContentLength);
//Need to do model state checking here, provided some code for that already
ModelState.Clear();
profileImg = null;
}else
{
return null;
}
//First check the first Image
if (profileImg != null && profileImg.ContentLength > 0)
{
driver.profileImgType = profileImg.ContentType;
string fileName = profileImg.FileName;
string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
Regex rgx = new Regex(pattern);
//Get the length of the image in bytes and create that array
driver.profileImg = new byte[profileImg.ContentLength];
//fill the array of bytes with the image data
profileImg.InputStream.Read(driver.profileImg, 0, profileImg.ContentLength);
//Need to do model state checking here, provided some code for that already
ModelState.Clear();
}
if (licenseImg==null && profileImg!= null && profileImg.ContentLength > 0)
{
driver.profileImgType = profileImg.ContentType;
string fileName = profileImg.FileName;
string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
Regex rgx = new Regex(pattern);
//Get the length of the image in bytes and create that array
driver.profileImg = new byte[profileImg.ContentLength];
//fill the array of bytes with the image data
profileImg.InputStream.Read(driver.profileImg, 0, profileImg.ContentLength);
//Need to do model state checking here, provided some code for that already
ModelState.Clear();
licenseImg = null;
}else
{
return null;
}
if (licenseImg != null && licenseImg.ContentLength > 0)
{
driver.licenseImgType = licenseImg.ContentType;
string fileName = licenseImg.FileName;
string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
Regex rgx = new Regex(pattern);
//Get the length of the image in bytes and create that array
driver.licenseImg = new byte[licenseImg.ContentLength];
//fill the array of bytes with the image data
licenseImg.InputStream.Read(driver.licenseImg, 0, licenseImg.ContentLength);
//Need to do model state checking here, provided some code for that already
ModelState.Clear();
}
}
if (images== null)
{
GetProfileImage(driver.driverId);
GetLicenseImage(driver.driverId);
}
DriversTier tier = new DriversTier();
// WebImage image = tier.getProfileImg(id);
tier.UpdateDrivers(driver);
return RedirectToAction("DisplayDrivers/" + driver.driverId);
}
[HttpGet]
公共操作结果编辑驱动程序(int-id)
{
DriversTier=新的DriversTier();
DriversModel driver=tier.getDriverByID(id);
WebImage image=新的WebImage();
GetProfileImage(image.driverId);
GetLicenseImage(image.driverId);
返回视图(驱动程序);
}
[HttpPost]
公共操作结果编辑驱动程序(驱动程序模型驱动程序,IEnumerable图像)
{
如果(图像!=null){
var profileImg=images.ElementAt(0);
var licenseImg=images.ElementAt(1);
if(profileImg==null&&profileImg.ContentLength0)
{
driver.licenseImgType=licenseImg.ContentType;
字符串文件名=licenseImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.licenseImg=新字节[licenseImg.ContentLength];
//用图像数据填充字节数组
licenseImg.InputStream.Read(driver.licenseImg,0,licenseImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
profileImg=null;
}否则
{
返回null;
}
//首先检查第一个图像
if(profileImg!=null&&profileImg.ContentLength>0)
{
driver.profileImgType=profileImg.ContentType;
字符串文件名=profileImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.profileImg=新字节[profileImg.ContentLength];
//用图像数据填充字节数组
profileImg.InputStream.Read(driver.profileImg,0,profileImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
}
if(licenseImg==null&&profileImg!=null&&profileImg.ContentLength>0)
{
driver.profileImgType=profileImg.ContentType;
字符串文件名=profileImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.profileImg=新字节[profileImg.ContentLength];
//用图像数据填充字节数组
profileImg.InputStream.Read(driver.profileImg,0,profileImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
licenseImg=null;
}否则
{
返回null;
}
if(licenseImg!=null&&licenseImg.ContentLength>0)
{
driver.licenseImgType=licenseImg.ContentType;
字符串文件名=licenseImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.licenseImg=新字节[licenseImg.ContentLength];
//用图像数据填充字节数组
licenseImg.InputStream.Read(driver.licenseImg,0,licenseImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
}
}
如果(图像==null)
{
GetProfileImage(driver.driverId);
GetLicenseImage(driver.driverId);
}
DriversTier=新的DriversTier();
//WebImage=tier.getProfileImg(id);
层更新驱动程序(驱动程序);
返回重定向操作(“DisplayDrivers/”+driver.driverId);
}
在这种情况下,如何允许图像为null或其中一个?
先谢谢你 不确定它是否导致了您的问题,但代码中似乎有一个额外的右大括号:
ModelState.Clear();
}
} <--- extra closing curly brace?
if (images== null)
ModelState.Clear();
}
}