如果没有选择任何文件,如何将二进制文件设置为null

本文关键字:二进制文件 设置 null 有选择 任何 文件 如果 | 更新日期: 2023-09-27 18:00:57

我正在使用此代码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);`

感谢

如果没有选择任何文件,如何将二进制文件设置为null

这样做:

postedFile = FileUpload.PostedFile;
byte[] bin;
if (postedFile == null)
  bin = new byte[0];
else
  bin = new byte[FileUpload.PostedFile.ContentLength];

检查FileUpload.PostedFile==是否为null,而不做任何需要它的事情可能是最简单的