我无法弄清楚如何使用上传按钮上传文件,然后插入(连同其他内容)数据库。
当我调试btnRegister_Click
时,HasFile返回false。
有没有办法让HasFile
持续2个不同的按钮点击?
上传代码:
<tr>
<td>Expense Receipt
</td>
<td class="blackDisplayName">
<asp:UpdatePanel ID="uplExpenseReceipt" runat="server" ViewStateMode="Enabled">
<ContentTemplate>
<asp:FileUpload ID="fuExpenseReceipt" runat="server" />
<asp:Button ID="btnUploadExpenseReceipt" runat="server" Text="Upload" OnClick="btnExpenseReceiptUpload_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUploadExpenseReceipt" />
</Triggers>
</asp:UpdatePanel>
<asp:Label ID="lblFileWarning" runat="server" Text="" Font-Bold="true" ForeColor="Red"></asp:Label>
</td>
</tr>
C#代码背后:
protected void btnExpenseReceiptUpload_Click(object sender, EventArgs e)
{
if (!fuExpenseReceipt.HasFile)
{
lblFileWarning.Text = "Please browse your computer to load a pdf or jpg file";
return;
}
if (fuExpenseReceipt.PostedFile.ContentLength > 1000000)
{
lblFileWarning.Text = "file size must be < 1Mb";
return;
}
//if (!fuExpenseReceipt.PostedFile.ContentType.Equals("application/pdf") | !fuExpenseReceipt.PostedFile.ContentType.Equals("image/jpg"))
if (!fuExpenseReceipt.PostedFile.ContentType.Equals("application/pdf"))
{
lblFileWarning.Text = "Only pdf or jpg files are allowed to be uploaded";
return;
}
if (!Directory.Exists(@"C:\Ireland Resources\ExpenseReceipts"))
{
Directory.CreateDirectory(@"C:\Ireland Resources\ExpenseReceipts");
}
string FolderUpload = @"C:\Ireland Resources\ExpenseReceipts\";
string PostedFile = FolderUpload + User.Identity.Name + "-" + fuExpenseReceipt.PostedFile.FileName;
fuExpenseReceipt.SaveAs(PostedFile);
}
注册码:
<td class="blackDisplayName" align="right">
<asp:Button ID="btnRegister" runat="server" Text="Register" ValidationGroup="ExpenseRegistration"
OnClick="btnRegister_Click" CssClass="gray-gradient" SkinID="NONE"/>
</td>
C#代码背后:
protected void btnRegister_Click(object sender, EventArgs e)
{
try
{
if (!fuExpenseReceipt.HasFile)
{
lblFileWarning.Text = "Please browse your computer to load a pdf or jpg file";
return;
}
byte[] expenseReceipt = null;
Stream fs = fuExpenseReceipt.PostedFile.InputStream;
byte[] bytFileData = new byte[fs.Length];
fs.Read(bytFileData, 0, Convert.ToInt32(fs.Length));
fs.Close();
expenseReceipt = bytFileData;
int tillID = Int32.Parse(hfTillID.Value);
double beforeVAT = double.Parse(txtBeforeVAT.Text);
double VAT = double.Parse(txtVAT.Text);
double totalAmount = double.Parse(txtExpenseTotal.Text);
lblExpenseMessage.Visible = true;
try
{
new TillEndOfDayDAL().SaveExpense(StationID, tillID, beforeVAT, VAT, totalAmount, txtExpenseDescription.Text
, expenseReceipt, Int32.Parse(ddlExpenseTypes.SelectedValue), Page.User.Identity.Name.ToUpper());
lblExpenseMessage.Text = "Sundry expense has been successfully registered.";
}
答案 0 :(得分:0)
我通过执行以下操作解决了这个问题:
Upload
按钮PostBackTrigger
移至&#39;外部&#39;的末尾。 UpdatePanel
,其中包含 FileUpload
控件和Register
按钮。PostBackTrigger
ControlID
更改为Register
按钮。