我正在使用此代码byte[] bin = new byte[FileUpload.PostedFile.ContentLength];
,但我正在设计的应用程序可能会也可能不会选择文件。
如果用户选择文件,代码工作正常,但如果我们不想上传任何文件,则会出现错误,说明"对象引用未设置为对象的实例。 " 如果我对我的代码进行以下更改。它在insert sql语句中给出了错误,说没有给sql参数赋值
if(FileUploadSTR.HasFile)
{
bin= new byte[FileUploadSTR.PostedFile.ContentLength];
}
else
{
bin= null;
}
sql就在这里
SqlCommand command = new SqlCommand("INSERT INTO SponsorInput (SerialNumber, Requestor, Sponsor, BusinessJustification, DebugFile, DebugFileName, ProductName, SigningType, FirmwareVersion, FirmwareDescription, SmokeTestResult)
SELECT CASE WHEN @SerialNumber = '' THEN NULL ELSE @SerialNumber END, CASE WHEN @Requestor = '' THEN NULL ELSE @Requestor END,
CASE WHEN @Sponsor = '' THEN NULL ELSE @Sponsor END, CASE WHEN @BusinessJustification = '' THEN NULL ELSE @BusinessJustification END, CASE WHEN @DebugFile = '' THEN NULL ELSE @DebugFile END,
CASE WHEN @DebugFileName = '' THEN NULL ELSE @DebugFileName END,
CASE WHEN @ProductName = '' THEN NULL ELSE @ProductName END,
CASE WHEN @SigningType = '' THEN NULL ELSE @SigningType END,
CASE WHEN @FirmwareVersion = '' THEN NULL ELSE @FirmwareVersion END,
CASE WHEN @FirmwareDescription = '' THEN NULL ELSE @FirmwareDescription END,
CASE WHEN @SmokeTestResult = '' THEN NULL ELSE @SmokeTestResult END", conn);
sql参数如下所示`
SqlParameter SmokeTestResult = new SqlParameter("@SmokeTestResult", SqlDbType.VarBinary, 8000);
if (bin== null)
{
bin = new byte[0];
}
else
{
SmokeTestResult.Value = bin;
}
command.Parameters.Add(SmokeTestResult);`
由于
答案 0 :(得分:1)
做这样的事情:
postedFile = FileUpload.PostedFile;
byte[] bin;
if (postedFile == null)
bin = new byte[0];
else
bin = new byte[FileUpload.PostedFile.ContentLength];
答案 1 :(得分:0)
最简单的方法就是检查FileUpload.PostedFile == null并且不做任何需要它的事情