如果文件上传不包含文件,如何控制提交表单
本文关键字:文件 控制 提交 表单 何控制 包含 如果 | 更新日期: 2023-09-27 18:22:25
大家好,如果fileupload中没有文件,我想问一下如何控制提交表单。我上传文件的代码是这样的。
FileInfo fi = new FileInfo(FileUpload1.FileName);
byte[] documentContent = FileUpload1.FileBytes;
string name = fi.Name;
string extn = fi.Extension;
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
cs.Open();
da.InsertCommand.ExecuteNonQuery();
cs.Close();
如果没有选择任何文件,并且单击了提交按钮,我希望将限制该文件存储在数据库中。我不知道该在if-else语句中加什么。请帮帮我。
您可以直接检查文件名是否包含任何数据。
类似:
if (FileUpload1.FileName != "")
{
FileInfo fi = new FileInfo(FileUpload1.FileName);
byte[] documentContent = FileUpload1.FileBytes;
string name = fi.Name;
string extn = fi.Extension;
// Add Connection string here //
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
cs.Open();
da.InsertCommand.ExecuteNonQuery();
cs.Close();
}
else
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('No Files Uploaded');", true);
}
更新:我认为您的代码有问题。U已使用
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
以插入数据。所以尝试以下方法插入数据
if (FileUpload1.FileName != "")
{
FileInfo fi = new FileInfo(FileUpload1.FileName);
byte[] documentContent = FileUpload1.FileBytes;
string name = fi.Name;
string extn = fi.Extension;
SqlConnection connections = new SqlConnection(strConn);
SqlCommand command = new SqlCommand("INSERT INTO tablename(DocumentName, DocumentContent, DocumentExt) VALUES (@DocumentName, @DocumentContent, @DocumentExt)", connections);
SqlParameter param0 = new SqlParameter("@DocumentName", SqlDbType.VarChar);
param0.Value = name;
command.Parameters.Add(param0);
SqlParameter param1 = new SqlParameter("@DocumentContent", SqlDbType.VarBinary);
param1.Value = documentContent;
command.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter("@DocumentExt", SqlDbType.VarChar);
param2.Value = extn;
command.Parameters.Add(param2);
connections.Open();
int numRowsAffected = command.ExecuteNonQuery();
connections.Close();
if (numRowsAffected != 0)
{
Response.Write("<BR>Rows Inserted successfully");
}
else
{
Response.Write("<BR>An error occurred uploading the image");
}
}
else
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('No Files Uploaded');", true);
}
在模型中的属性上添加一个[必需]标记。您可以使用验证添加响应和其他内容。
我相信这会对你有用
string name = fi.Name;
string extn = fi.Extension;
if(!String.IsNullOrEmpty(name))
{
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
cs.Open();
da.InsertCommand.ExecuteNonQuery();
cs.Close();
}
因此,当我们检查String.IsNullOrEmpty(name)
方法时。它检查文件名是否为空。如果没有选择任何文件,并且值为none,则不会调用SQL。
我不确定您需要哪一个:
1.限制提交(回发),加载项RequiredFieldValidator
<asp:RequiredFieldValidator ID="Validation1" runat="server" ControlToValidate="FileUpload1" ErrorMessage="An image file is required"></asp:RequiredFieldValidator>
2.不要只保存图像:
`if(FileUpload1 != null && FileUpload1.FileName!= "")`
希望这个帮助。。。
使用以下场景:
ListBox lbAttachments = (ListBox)FileUpload1;
if(lbAttachments.Items.Count > 0)
{
for(int i = 0; i < lstAttachments.Items.Count; i++)
{
FileInfo fi = new FileInfo(lbAttachments.Items[i].Text);
byte[] documentContent = FileUpload1.FileBytes;
string name = fi.Name;
string extn = fi.Extension;
SqlCommand cmdInsert = new SqlCommand("Insert into tableName(DocumentName,DocumentContent, DocumentExt) Values(@DocumentName,@DocumentContent,@DocumentExt)", con);
SqlParameter Name = cmdInsert.Parameters.Add("@DocumentName", SqlDbType.VarChar, 100);
SqlParameter DocumentContent = cmdInsert.Parameters.Add("@DocumentContent", SqlDbType.Int);
SqlParameter DocumentExt= cmdInsert.Parameters.Add("@DocumentExt", SqlDbType.VarChar, 10);
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
cs.Open();
da.InsertCommand.ExecuteNonQuery();
cs.Close();
}
}
//另一种方式是
if(FileUpload1.HasFile)//To check file os present
{
if(FileUpload1.PostedFile.ContentLength > 0)
{
FileInfo fi = new FileInfo(FileUpload1.FileName);
byte[] documentContent = FileUpload1.FileBytes;
string name = fi.Name;
string extn = fi.Extension;
SqlCommand cmdInsert = new SqlCommand("Insert into tableName(DocumentName,DocumentContent, DocumentExt) Values(@DocumentName,@DocumentContent,@DocumentExt)", con);
SqlParameter Name = cmdInsert.Parameters.Add("@DocumentName", SqlDbType.VarChar, 100);
SqlParameter DocumentContent = cmdInsert.Parameters.Add("@DocumentContent", SqlDbType.Int);
SqlParameter DocumentExt= cmdInsert.Parameters.Add("@DocumentExt", SqlDbType.VarChar, 10);
da.InsertCommand.Parameters.Add("@DocumentName", SqlDbType.VarChar).Value = name;
da.InsertCommand.Parameters.Add("@DocumentContent", SqlDbType.VarBinary).Value = documentContent;
da.InsertCommand.Parameters.Add("@DocumentExt", SqlDbType.VarChar).Value = extn;
cs.Open();
da.InsertCommand.ExecuteNonQuery();
cs.Close();
}
}