[Required(ErrorMessage = "Please Upload Picture")]
public String UserPic { get; set; }
在我的API控制器中:
[HttpPost]
[Route("api/Details/PostUsers")]
public HttpResponseMessage PostUsers(UserDetail model)
{
if (ModelState.IsValid)
{
try
{
using (DBEntities db = new DBEntities())
{
var obj = db.sp_InsertUser(model.FirstName, model.MiddleName, model.LastName, model.DateOfBirth, model.Gender, model.EmailAddress, model.UserPassword, model.MobileNo,UserPic);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Redirect, obj );
return response;
}
}
catch (Exception ex)
{
throw;
}
}
else
{
// return Ok(model);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
在我的家庭控制器中
[HttpPost]
public ActionResult Register(Users users, HttpPostedFileBase UserPic)
{
var client = new RestClient("mylocalhost");
var request = new RestRequest("api/Details/PostUsers", Method.POST);
var fileName = Path.GetFileName(UserPic.FileName);
request.AddParameter("UserPic", UserPic.FileName, ParameterType.UrlSegment);
request.AddJsonBody(users);
var response = client.Execute(request);
if (response.Data != null)
{
var path = Path.Combine(Server.MapPath("~/Content/Upload"), fileName);
users.UserPic.SaveAs(path);
ViewBag.Message = "File has been uploaded successfully";
return RedirectToAction("Index");
}
return View(users);
}
我正在尝试上载Pic,然后使用其余的Sharp文件保存到数据库。我已经尝试了许多示例,但这没有用。帮我解决这个问题。在此先感谢...
答案 0 :(得分:0)
我在这里看到的
var obj = db.sp_InsertUser(model.FirstName, model.MiddleName, model.LastName, model.DateOfBirth, model.Gender, model.EmailAddress, model.UserPassword, model.MobileNo,UserPic);
试图保存UserPic
对象,而不是字节数组,它本身就是对象,在数据库字段中,您将得到 System.Web.HttpPostedFileWrapper 而不是文件字节。
这是因为UserPic为HttpPostedFile
。 HttpPostedFileWrapper类派生自HttpPostedFileBase类,并用作HttpPostedFile类的包装。它具有4个属性:
您需要存储文档的字节数组,而不是这样做。 这里是一个这样做的例子:
public byte[] GetByteArrayOfPosterFile(HttpPostedFile MyFile)
{
int FileLen = MyFile.ContentLength;
byte[] input = new byte[FileLen];
Stream MyStream = MyFile.InputStream;
// Read the file into the byte array.
MyStream.Read(input, 0, FileLen);
return input;
}
上述方法将为您返回已发布文件的字节数组,以后可以将其存储在数据库中。您可以使用其他字段扩展数据库表,以保存元信息,例如ContentType和FileName。
要仅从HttpPostedFile
中获取文件名,您需要访问其名称属性FileName
e.x string fileName = MyFile.FileName;