Я получаю эту ошибку при загрузке файла, хотя мой тип данных столбца в SQL уже равен varbinary
. Я не знаю, почему мой параметр @FileUpload
говорит nvarchar
. Поскольку я использую функцию обработки данных, чтобы ее можно было легко сохранить в целом и отправить в базу данных, я также использую UserDefinedTableType
для этого, и мой тип данных уже равен varbinary
.
public ActionResult UpdateClearanceItems(string TranNo, string CompanyID, string AtmCard, string FleetCard, string HmoCard,
string Uniform, string RSA, string EducationBenefitsRSA, string AmaBankLoan, string UsedSL,
string ProratedSL, string KingsTreat, string LastPayroll, string OthersHr, string remarksCompanyID,
string remarksAtmCard, string remarksFleetCard, string remarksHmoCard, string remarksUniform,
string remarksRSA, string remarksEducationBenefitsRSA , string remarksAmaBankLoan, string remarksUsedSL,
string remarksProratedSL, string remarksKingsTreat, string remarksLastPayroll, string remarksOthersHr,
HttpPostedFileBase[] FileUpload)
{
dynamic user = Session["UserProfile"];
string UserID = user[0].UserID.ToString();
DataTable dtItems = new DataTable();
dtItems.Columns.Add("FileName", typeof(string));
dtItems.Columns.Add("ContentType", typeof(string));
dtItems.Columns.Add("Data", typeof(string));
foreach (var file in FileUpload)
{
byte[] bytes;
using (BinaryReader br = new BinaryReader(file.InputStream))
{
bytes = br.ReadBytes(file.ContentLength);
}
dtItems.Rows.Add(file.FileName, file.ContentType, bytes);
}
using (SqlConnection con = new SqlConnection(GlobalFunction.GetConnection("PayrollConnect")))
{
con.Open();
try
{
SqlCommand cmd = new SqlCommand("spm_EmpClearancePending", con);
cmd.CommandTimeout = 1000000;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@TranNo", TranNo.ToString());
cmd.Parameters.AddWithValue("@UserID", UserID.ToString());
cmd.Parameters.AddWithValue("@CompanyID", CompanyID.ToString());
cmd.Parameters.AddWithValue("@AtmCard", AtmCard.ToString());
cmd.Parameters.AddWithValue("@FleetCard", FleetCard.ToString());
cmd.Parameters.AddWithValue("@HmoCard", HmoCard.ToString());
cmd.Parameters.AddWithValue("@Uniform", Uniform.ToString());
cmd.Parameters.AddWithValue("@RSA", RSA.ToString());
cmd.Parameters.AddWithValue("@EducationBenefitsRSA", EducationBenefitsRSA.ToString());
cmd.Parameters.AddWithValue("@AmaBankLoan", AmaBankLoan.ToString());
cmd.Parameters.AddWithValue("@UsedSL", UsedSL.ToString());
cmd.Parameters.AddWithValue("@ProratedSL", ProratedSL.ToString());
cmd.Parameters.AddWithValue("@KingsTreat", KingsTreat.ToString());
cmd.Parameters.AddWithValue("@LastPayroll", LastPayroll.ToString());
cmd.Parameters.AddWithValue("@OthersHr", OthersHr.ToString());
cmd.Parameters.AddWithValue("@remarksCompanyID", remarksCompanyID.ToString());
cmd.Parameters.AddWithValue("@remarksAtmCard", remarksAtmCard.ToString());
cmd.Parameters.AddWithValue("@remarksFleetCard", remarksFleetCard.ToString());
cmd.Parameters.AddWithValue("@remarksHmoCard", remarksHmoCard.ToString());
cmd.Parameters.AddWithValue("@remarksUniform", remarksUniform.ToString());
cmd.Parameters.AddWithValue("@remarksRSA", remarksRSA.ToString());
cmd.Parameters.AddWithValue("@remarksEducationBenefitsRSA", remarksEducationBenefitsRSA.ToString());
cmd.Parameters.AddWithValue("@remarksAmaBankLoan", remarksAmaBankLoan.ToString());
cmd.Parameters.AddWithValue("@remarksUsedSL", remarksUsedSL.ToString());
cmd.Parameters.AddWithValue("@remarksProratedSL", remarksProratedSL.ToString());
cmd.Parameters.AddWithValue("@remarksKingsTreat", remarksKingsTreat.ToString());
cmd.Parameters.AddWithValue("@remarksLastPayroll", remarksLastPayroll.ToString());
cmd.Parameters.AddWithValue("@remarksOthersHr", remarksOthersHr.ToString());
cmd.Parameters.AddWithValue("@FileUpload" ,dtItems);
cmd.ExecuteNonQuery();
}
catch(Exception err)
{ }
}
return RedirectToAction("ClearanceDashboard", "Clearance", new { Message = "Done" });
}