首页 > 解决方案 > 如何在 ASP Web 表单中添加附件,但不上传到服务器?

问题描述

我会保持简短和重点,因为我很惊讶我能做到这一点,但作为序言,我对任何与编码相关的东西都很陌生;我的大部分知识来自书籍、Youtube 和谷歌搜索。

我的问题是:

我如何才能让最终用户能够附加文档(jpeg、png 等)并将其通过电子邮件发送给我们公司的特定销售代表,而无需通过使用 ASP 将该文档上传到我们的服务器形式?

我创建了一个表格,我的公司用来从访问者那里获取超级基本信息。他们现在希望通过此表单发送其会员 ID 的图片附件,但不保存到服务器上,只需附加并直接发送到销售代表的电子邮件。

这就是我所拥有的,我不确定这是否是最佳实践方式,但这是我从代码片段、书籍等中收集到的。我修剪了很多,以免让它变得超长而且只是达到我想做的点。因此,如果某些事情没有意义,请告诉我,我肯定会尝试更好地澄清它,但我确实摆脱了许多样式选项和其他要求地址、电话号码等的字段,例如。

Default.aspx

<body>
<form id="form1" runat="server">
<table>    
<tr>
<td> Full Name:
<asp:TextBox ID="Name" runat="server"> 
</asp:TextBox>
</td>
</tr>
</table>

<blockquote>
<p>
<asp:Button ID="Button1" runat="server" Text="Submit Member ID" 
OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Reset Form" 
OnClick="Button2_Click" />
</p>
</blockquote>

</form>
</body>
</html>

使其工作的后端页面如下:

Default.aspx.cs

using System;
using System.Net.Mail;
using System.Net;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class _Default : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
  {
  }
  protected void Button1_Click(object sender, EventArgs e)
  {   
   String strResult = "Member ID: Results \r\n \r\nResults: \r\n";                
   strResult += "Name: " + Name.Text + "\r\n";       
   MailAddress fromAddress = new MailAddress("mydomain@domain.com", 
   "Webmaster");
   smtpClient.Host = "erelay.mydomain.com"; //"localhost";
   smtpClient.Port = XX;
   message.From = fromAddress;
   message.To.Add("salesrep1@domain.com");
   message.CC.Add("salesrepmanager@domain.com");
   message.BccAdd("salesrepCEO@domain.com"); 
   message.Subject = "Member ID";
   message.IsBodyHtml = false; 
   message.Body = strResult;         
   smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
   smtpClient.Send(message);
   Response.Redirect("thankyoupage@domain.com");   
  }
protected void Button2_Click(object sender, EventArgs e)
 {
 Name.Text="";
 }
}

在那之后,他们唯一想要的是会员能够附上他们的会员 ID,无论是扫描的照片还是你有的东西,连同表格一起发送。扫描的会员 ID 可以是 JPEG、PNG、PDF 等格式,这并不重要,他们唯一不想要的是它会上传到我们的服务器。

我在网上查看并浏览了其他人发布的一堆示例和代码片段,而我最接近工作的是 HTML 部分中的类似内容,例如在询问名称后说:

<tr>  
<td>  
<asp:FileUpload ID="FileUpload" runat="server" />  
</td>
</tr>  

然后在后端,在 aspx.cs 上,在 message.body 之后添加它

if (FileUpload.HasFile)  
{  
message.Attachments.Add(new Attachment(FileUpload.PostedFile.InputStream, 
FileUpload.FileName));  
}  

我还看到其他代码片段似乎暂时在服务器上创建一个位置,然后在发送后自行删除?

我也尝试过制作像这样的第三个按钮作为附件,但一切都坏了。

protected void Button3_Click

希望这个帖子有意义。我建议使用第三方网站表单网站,但公司坚持认为这是内部的。我目前的另一个建议在将文档发送到哪里的表格上显示了实际的电子邮件地址,但该公司认为这对最终用户来说步骤太多,并不是所有人都这样做/跳过那部分。

表单本身效果很好,它将信息发送给我添加的代表以及需要抄送或密件抄送的任何人。

如果有人能指出我正确的方向,我也将不胜感激。我也阅读了很多关于 ASP.NET 的在线文档,但对于新手来说可能有点不安。

感谢您的时间。

标签: c#htmlasp.netforms

解决方案


推荐阅读