gpt4 book ai didi

c# - 如何处理 DALC 中的非必填文件上传字段?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:20 24 4
gpt4 key购买 nike

我正在编写一个管理表单。用户可能会也可能不会更新 PDF 文件;如果他这样做,我将在我的表单中处理它,编码如下:

string fileExt = System.IO.Path.GetExtension(regFormUpload.FileName);
if (regFormUpload.HasFile)
{
if (string.Equals(fileExt, ".pdf", StringComparison.OrdinalIgnoreCase))
{
Stream pdfFileStream = regFormUpload.PostedFile.InputStream;
fileData = new byte[regFormUpload.PostedFile.ContentLength];
pdfFileStream.Read(fileData, 0, regFormUpload.PostedFile.ContentLength);

// Call DALC method with uploaded file(s) params
}
else
{
regFormCustVal.IsValid = false;
}
}
else
{
// Call DALC method indicating "null" for non-uploaded files(s)???
}

有没有办法将空值传递给 DALC/存储过程?它作为 varbinary(max) 类型存储在 SQL Server 中。以前,我曾经根据是否有人上传文件来编写单独的方法,我知道必须有更简单的方法,但 C# 语法让我望而却步。

更新 - 2012 年 5 月 24 日

我还没有得到这个问题的答案。在我的 DALC 中,我目前必须调用几种数据库更新方法,具体取决于文件 (byte[]) 是否已上传。无论如何要解决这个问题?我有两个单独的文件上传控件,都是非必填字段。这意味着我必须编写最多四种独立的数据库更新方法来解决 (2^2) 种可能性!

最佳答案

没有可空字节数组这样的东西,您始终可以将数组设置为空。

至于文件上传,你可以像FileUpload.PostedFile的文档那样做。在示例中建议。

更新:不确定您的 DALC 是如何工作的,但要将数组传递给存储过程,只需确保在数组为空时传递 DBNull.Value

更新 2:您必须将 DBNull.Value 传递给过程,对于 DAL,只需将数组设置为 null。

fileData = null;

然后当您调用该过程时,您必须检查属性并传递值或 DBNull.Value。参见 this question关于如何做到这一点。

关于c# - 如何处理 DALC 中的非必填文件上传字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com