download einer file nach dem memoryn in SQL server 2008 database

WEB FRAMEWORK: ASP.NET in C #

Hey Leute, ich habe überall im Internet nach etwas gesehen, was mir zeigen würde, wie das zu tun ist, aber es nicht finden kann. Ich habe eine Seite, die Informationen über eine Person einschließlich eines Lebenslaufs in Form eines doc docx oder pdf hochlädt. Ich kann die file in Ordnung bringen, aber ich weiß nicht, wie auf einer anderen Seite, um die file herunterzuladen, die in die Zeile dieser Person in der database geladen wurde. Hier ist der Upload-Code

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.IO; 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 filePath = FileUpload1.PostedFile.FileName; string filename = System.IO.Path.GetFileName(filePath); string ext = System.IO.Path.GetExtension(filename); string contenttype = String.Empty; switch (ext) { case ".doc": contenttype = "application/vnd.ms-word"; break; case ".docx": contenttype = "application/vnd.ms-word"; break; case ".pdf": contenttype = "application/pdf"; break; } if (contenttype.Equals(String.Empty)) { Response.Write(@"<script language='javascript'>alert('You have selected an invalid resume type.')</script>"); return; } Stream fs = FileUpload1.PostedFile.InputStream; BinaryReader br = new BinaryReader(fs); Byte[] bytes = br.ReadBytes((Int32)fs.Length); SqlConnection myConnection = new SqlConnection("user id=;" + "password=;server=;" + "Trusted_Connection=yes;" + "database=contractors; " + "connection timeout=30"); try { myConnection.Open(); } catch (Exception el) { Console.WriteLine(el.ToString()); } SqlCommand myCommand = new SqlCommand("Command String", myConnection); myCommand.CommandText = "INSERT INTO contractor (firstName, lastName,phone,email,company,location,fileName,contentType,data,date) " + "Values (@sqlfirstName,@sqllastName,@sqlphone,@sqlemail,@sqlcompany,@sqllocation,@Name,@ContentType,@Data,@sqldate)"; myCommand.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = filename; myCommand.Parameters.Add("@ContentType", System.Data.SqlDbType.VarChar).Value = contenttype; myCommand.Parameters.Add("@Data", System.Data.SqlDbType.Binary).Value = bytes; myCommand.Parameters.Add("@sqlfirstName", System.Data.SqlDbType.VarChar, 50).Value = TextBox1.Text; myCommand.Parameters.Add("@sqllastName", System.Data.SqlDbType.VarChar, 50).Value = TextBox2.Text; myCommand.Parameters.Add("@sqlemail", System.Data.SqlDbType.VarChar, 75).Value = TextBox4.Text; myCommand.Parameters.Add("@sqlphone", System.Data.SqlDbType.VarChar, 25).Value = TextBox3.Text; myCommand.Parameters.Add("@sqlcompany", System.Data.SqlDbType.VarChar, 30).Value = TextBox5.Text; myCommand.Parameters.Add("@sqllocation", System.Data.SqlDbType.VarChar, 70).Value = TextBox6.Text; myCommand.Parameters.Add("@sqldate", System.Data.SqlDbType.DateTime, 30).Value = DateTime.Now; myCommand.ExecuteNonQuery(); try { myConnection.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Response.Write(@"<script language='javascript'>alert('You information has been submitted. Thank you.')</script>"); } } 

Nachdem die Informationen im hochgeladenen Ich habe eine andere Seite, die die Informationen an einen Admin-Benutzer mit einem Gridview zeigt. Würde mir jemand helfen, wie man das in eine herunterladbare file übreplace kann? Hier ist der ASP.net Code

 <div> <div class="article"> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" emptydatatext="No data available" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" onselectedindexchanged="GridView1_SelectedIndexChanged"> <Columns> <asp:CommandField ShowSelectButton="True" SelectText="Get Resume" /> <asp:BoundField DataField="firstName" HeaderText="First Name" SortExpression="firstName" /> <asp:BoundField DataField="lastName" HeaderText="Last Name" SortExpression="lastName" /> <asp:BoundField DataField="phone" HeaderText="Phone Number" SortExpression="phone" /> <asp:BoundField DataField="email" HeaderText="Email" SortExpression="email" /> <asp:BoundField DataField="company" HeaderText="Company" SortExpression="company" /> <asp:BoundField DataField="location" HeaderText="Location" SortExpression="location" /> <asp:BoundField DataField="fileName" HeaderText="fileName" SortExpression="fileName" Visible="False" /> <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" Visible="False" /> <asp:BoundField DataField="date" HeaderText="date" SortExpression="date" /> <asp:BoundField DataField="contentType" HeaderText="contentType" SortExpression="contentType" Visible="False" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:contractorsConnectionString %>" SelectCommand="SELECT [firstName], [lastName], [phone], [email], [company], [location], [fileName], [id], [date], [data], [contentType] FROM [contractor]"> </asp:SqlDataSource> </div> </div> 

Die Art, wie Sie versuchen, den Download zu implementieren, haben mehrere Probleme und mögliche Probleme.

Verwenden Sie einen generischen Handler, um die file zu lesen, und senden Sie die file.

Auf dem gridView fügen Sie einen Link zum generischen Handler hinzu und senden Sie auf die Abfrage die ID der file, die Sie herunterladen möchten.

zB <a taget="_blank" href="/downloadFile.ashx?id=3">download</a>

dann auf ashx Sie lesen die 3, und öffnen Sie die database, und senden Sie dann die file.

Ebenfalls

  Response.Write(@"<script language='javascript'>alert('You have selected an invalid resume type.')</script>"); 

Diese Zeile ist schlechte Praxis, finden Sie einen anderen path, um Fehler an Ihre Benutzer zu senden und verwenden Sie nicht die Respose.Write, um Skript auf der Seite zu rendern. Auch dieses Skript ist wahrscheinlich goind, um das DOM auf deiner Seite zu brechen und wird am Ende der Seite nach dem Körper rennen.

Die Konsole arbeitet nicht auf asp.net – bitte nimm dir noch mehr time, um zu verstehen, was und was auf dem Render der Seite geht.