PDA

View Full Version : مشکل نام فایل



Erfanian
شنبه 09 آبان 1383, 11:38 صبح
با سلام
من کد زیررا برای دانلود کردن یک فایل توسط کاربر -پس‌از کلیلک یک دکمه‌-نوشته‌ام:

("Response.WriteFile("mySound.Wav
()Response.End

که همه مراحل درست انجام می‌شود و پنجره دانلود نیز ظاهر می‌شود اما
مشکل اینست که در هنگام باز شدن پنجره File Download که موقع دانلود فایلها ظاهر
می‌شود به جای نام فایلی که من داده‌ام نام صفحه aspx‌ که برنامه در آنست ظاهر می‌شود!(بطور مثال webform1.wav)
لطفا مرا راهنمائی کنید. :)

Vahid_Nasiri
شنبه 09 آبان 1383, 19:14 عصر
بله . چون فقط دو مورد کافی نیست. کد کامل به صورت زیر است :


Response.AddHeader( "Content-Disposition", "attachment; filename =" + file_name );
Response.AddHeader( "Content-Length", strFileSize );
Response.ContentType = "application/octet-stream";
Response.WriteFile(file_name_path_physical);
Response.Flush();
Response.End();

Erfanian
یک شنبه 10 آبان 1383, 08:49 صبح
جناب نصیری
با تشکر از ارسال پاسخ
مواردی را که گفته بودید انجام دادم ولی باز هم موقع Save‌ نام وب‌فرم جاری را به
عنوان نام نشان می‌دهد.این کار را حتی با یک صفحه جدید و بدون هیچ تغییری در کدهای Html آن نیز انجام دادم. :(

Vahid_Nasiri
یک شنبه 10 آبان 1383, 19:23 عصر
کد فوق کامل است و توسط خود من در برنامه ای تست شده (و محل قرار گیری آن page_load‌ است).
=======
راه دوم:
از Response.Redirect استفاده کنید. آرگومان آنرا نام فایل قرار دهید. این یک خط را در page_load‌ فراخوانی کنید و نتیجه را ببینید.

Erfanian
دوشنبه 11 آبان 1383, 08:20 صبح
با عرض سلام مجدد
طبق گفته شما من کد زیر را در Page_load صفحه‌ای بنام WebForm2.aspx‌ گذاشتم

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myFilePath, myFileName As String
Dim myFileSize As Integer
Dim MyFileInfo As System.IO.FileInfo

myFileName = Session("myFilename")
myFilePath = Session("myFilePath")


MyFileInfo = New System.IO.FileInfo(myFilePath & "\" & myFileName)
myFileSize = MyFileInfo.Length

Response.AddHeader("Content-Disposition", "attachment; filename =" & myFileName)
Response.AddHeader("Content-Length", myFileSize.ToString)
Response.ContentType = "application/octet-stream"
Response.WriteFile(myFilePath & "\" & myFileName)
Response.Flush()
Response.End()
End Sub


و سپس آنرا از داخل صفحه WebForm1.aspx با دستور ("server.transfer("webform2.asp فراخوانی کردم.
ولی نتیجه مانند قبل بود!
در ضمن در خط آخر نوشته‌اید:

این یک خط را در page_load‌ فراخوانی کنید و نتیجه را ببینید.
منظورتان از این یک خط چیست؟
و در خاتمه اگر ممکن است یک کد کامل از این بحث را در این قسمت قرار دهید :oops:
با سپاس فراوان :D