ทำ Hyperlink เพื่อทำการ Download File ใน Gridview อย่างไรหรอครับ
คุณ MR. WIN ครับ คือตอนนี้ผมทำให้มันคลิก link ไปยัง path ที่เก็บไว้ได้แล้วน่ะครับแต่ว่า
พอ click ไปแล้ว มันไม่มีอะไรขึ้นมาให้ กด download เลยครับ ตามรูปครับ
พอเอามาไปชี้ดูสมมุติว่า ไฟล์ Account.xlsx ตรง status bar ก็ขึ้นน่ะครับว่า เป็น path/ url ที่ file:///d:/FullText/2000/1301/001/Account.xlsx แต่เมื่อ click แล้วก้ไม่มีอะไรเกิดขึ้นเลย
ผมต้องทำอย่างไรหรอครับ ที่จะทำให้เมื่อ click ที่ชื่อไฟล์นั้น ๆ แล้ว สามารถ download file ได้ครับ
Date :
2010-04-03 11:59:01
By :
VanishZero
ใช้ path ของ app ครับ
ไม่ใช่ path ของเครื่อง
ใช้ ~ เพื่ออ้างอิงถึง root ของ app
แต่ที่สังเกตดู file:///d:/FullText/2000/1301/001/Account.xlsx มันไม่น่าจะเป็น path ของ app นะ
Date :
2010-04-03 12:25:08
By :
tungman
ขอโทษน่ะครับ ผมอาจจะเข้าใจยาก คือว่า ตอนผม upload file ผมก็ใช้ Server.Mappath น่ะครับ มันก็ save ลง database เป็นแบบนั้น
ยังไม่คืบหน้าไปไหนเลยครับ คือ เหมือนเดิมครับ ใน link ถ้า คลิกขวา แล้ว save target as มันก็สามารถ save file ได้น่ะครับ แต่เวลา click มันก็ไม่มีอะไรเกิดขึ้นเลย
ต้องเพิ่ม code อย่างไรตรงไหนดีล่ะครับ ติดมาหลายวันแล้ว
Date :
2010-04-03 18:14:32
By :
VanishZero
เอา code ตอนที่ link มาให้ดูหน่อยครับ
Date :
2010-04-03 18:24:07
By :
webmaster
Code ในส่วนของ Data Gridview ครับ
Code (ASP)
<asp:GridView ID="gvAttach" runat="server" AutoGenerateColumns="False" DataKeyNames="projectID">
<Columns>
<asp:TemplateField HeaderText="Download">
<ItemTemplate>
<a href="<%#Eval("fileLocation")%>"> <%#Eval("fileName")%></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="fileDesc" HeaderText="Description" SortExpression="fileDesc" />
<asp:BoundField DataField="contentType" HeaderText="File Type" SortExpression="contentType" />
<asp:BoundField DataField="fileSize" HeaderText="Size" SortExpression="fileSize" />
</Columns>
</asp:GridView>
Code ส่วนของ การ Bind
Code (C#)
private void BindData()
{
try
{
string strDb = Server.MapPath("KMSSP.accdb");
string strCon = "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" + strDb + "; Persist Security Info=False";
string strSql = "SELECT * FROM Attach";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, strCon);
DataTable table = new DataTable();
da.Fill(table);
gvAttach.DataSource = table;
gvAttach.DataBind();
}
catch (Exception ex)
{
Helpers.ShowMessageBox01(ex.Source + " ; " + ex.Message + "<br/>" + ex.StackTrace);
}
}
Date :
2010-04-03 18:32:04
By :
VanishZero
คิดว่าน่าจะเป็นปัญหาในส่วนของขั้นตอนการอัพโหลดไฟล์นะครับ คือตอนที่อัพโหลด ใช้ Server.MapPath เพื่อระบุ physical file path ที่จะเก็บ เช่น c:\\inetpub\webroot\webproject\file\filename.ext แต่ path string ที่เก็บใน sql server ใช้แค่ "~/file/filename.ext" น่ะครับ
Date :
2010-04-03 19:32:05
By :
firefly
แล้วถ้าดึงไฟล์ข้าม server หล่ะครับ
hyperlink1.nativeurl = server.mappath("//xxx.xxx.xxx.xx/folder/filename.pdf")
แบบนี้จะดึงไฟล์มาโชว์เปล่าครับ
Date :
2010-11-12 10:52:15
By :
notzafia
Load balance : Server 03