如果文件上传不包含文件,如何控制提交表单

本文关键字:文件 控制 提交 表单 何控制 包含 如果 | 更新日期: 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(); 
               }
         }