• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

یه سوال فنی کمک کمک

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
من یه توضیحی مختصری میدم در آخر سوالو نوشتم .....:)
کارایی که برنامه انجام میده :
من یه فرم دارم که از کاربر یه سری اطلاعات رو میگیره و نیاز به Upload یه فایل هم داره . Upload تو یه page دیگه باز میشه و فایل رو از کاربر می گیره .

حالا باید اطلاعاتی که کاربر درون فرم اولی وارد کرده ثابت بمونه ( با رفتن کاربر به فرم Upload و برگشتنش تمامی اطلاعات وارد شده حذف نشه یه چیزی شبیه ASP.NET )

کارایی که من کردم :
من این اطلاعات رو به فرم Upload می فرستم و همینطور از فرم دوباره میتونم بگیرم ، حالا مشکل من اینجاست که وقتی کاربر درون فرم Upload هست و Submit میکنه تمام این کارها انجام میشه ولی یه Page جدید باز میشه ...:(

من میخوام بعد از Submit شدن صفحه بسته بشه و تمامی اطلاعات به همون صفحه قبلی برگرده ( یعنی یه Explorer دیگه باز نشه )، چیکار باید بکنم ؟؟؟؟
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
من یه توضیحی مختصری میدم واول صفحه سوالو نوشتم .....
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
یه شیر مرد پیدا نشد به من کمک کنه
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
شما مجبور نیستی دوباره از صفحه upload اطلاعات رو به صفحه اول submit کنی - فقط کافیه همون صفحه upload رو ببندی
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
یه کم بیشتر توضیح بده
من نمی فهمم

یعنی اگه من در صفحه اصلی یه TextBox داشته باشم به نام Name . که در حال حاضر خالیه
و در صفحه Upload هم یه TextBox داشته باشم به همون نام . حالا اگه من در صفحه Upload یه فایل رو بر روی سرور Upload کنم که بعد از این کار مقدار Value ی TextBox صفحه Upload مقدار دهی میشه . تا اینجا که مشکلی نداریم .

حالا بعد از بستن صفحه Upload مقدار Value ی TextBox این صفحه ( صفحه اول ) هم به صورت اوتومات مقدار دهی میشه ؟ و اون مقدار رو در صفحه نشاشن میده ؟
درسته ؟ منظور شما همینه جناب mazoolagh ؟؟؟؟؟


اگه در مورد سوالی که پرسیدم بیشتر توضیح می خواین اینجا رو هم یه نگاهی بکنید . یه تیکه از یه برنامه Webwiz هست که من ازش سر در نیاوردم . درست همین کاری که من می خوام میکنه . ولی اینقدر پیچوندنش که نمیشه ازش چیزی فهمید .
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
بابا یکی کمک کنه لطفاً .............................
............................................
...........................................
.........................................
.......................................
.....................................
...................................
.................................
...............................
.............................
...........................
.........................
.......................
 

amin1us

کاربر تازه وارد
تاریخ عضویت
2 ژوئن 2004
نوشته‌ها
199
لایک‌ها
0
به نقل از mehdi25 :
بابا یکی کمک کنه لطفاً .............................
............................................
...........................................
.........................................
.......................................
.....................................
...................................
.................................
...............................
.............................
...........................
.........................
.......................
خیلی گنگه!!
یعنی چه؟؟
ای س پی کار می کنی یا ای س پی . نت؟
به سایت http://asp.net یه سری بزن ببین مشکلت رفع نمی شه؟!
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,601
لایک‌ها
49
محل سکونت
Anywhere
فهميدم چي ميخواي
يه پنجره با جاوا اسكريپت باز ميكني بعد فايل رو ميگيري حالا ميخواي وقتي اوكي زد اين پنجره اپلود بسته بشه و مسير فايل تو صفحه اصلي تو تكست باكس باشه
---
خوب واسه چي شما ي پنجره جديد باز ميكني؟؟؟؟؟
همونجا فايل رو بگير ديگه
162.gif

لازم نيست يه صفحه ديگه باز كني
39.gif

البته من تو پي اچ پي نوك ديدم اينو اگه خواستي نگاه كن يا من نگاه ميكنم بهت ميگم چجورياست
38.gif
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
اول از این که توجه کردین تشکر کنم

من ASP کار کردم . :)

mehdvirus جان شما درست فهمیدی .
ولی میدونی که برای Upload فایل باید فرمی که آدرس فایل رو ازت میگیره باید ENCTYPE="multipart/form-data" باشه . وبرعکس وقتی که می خوای اطلاعات رو در Database بریزی نباید فرمت multipart/form-data داشته باشه . پس مجبوریم در دو فرم مجزا این دو را دریافت کنیم ، و چون در ASP کلاسیک نمیتونیم دو تا فرم در یه صفحه داشته باشیم بلاجبار در دو صفحه مجزا اینارو دریافت میکنیم . اول فایل رو ار کاربر گرفته و بر روی سرور Upload می کنیم ، بعد اسم فایل رو به یه صفحه دیگه ارسال کرده و با اطلاعات دیگر درون Database میریزیم .

اگه دقت کنین تقریبا تمام سایت هایی که از شا فایل می گیرند ، فرم ارسال فایل در یه پنجره جدید باز میشه .


یه چیزی مثل Attachment همین سایت که میتونین فایل رو سرور بریزید .

وقتی که وارد قسمت Post Reply میشید اون پایین Manage Attachments بزنید و به عنوان مثال یه فایل رو Upload کنید .تا کاملا متوجه منظور من بشید.

من دقیقاً همچین چیزی می خوام .





 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
به نقل از mehdi25 :
اول از این که توجه کردین تشکر کنم

من ASP کار کردم .

mehdvirus جان شما درست فهمیدی .
ولی میدونی که برای Upload فایل باید فرمی که آدرس فایل رو ازت میگیره باید ENCTYPE="multipart/form-data" باشه . وبرعکس وقتی که می خوای اطلاعات رو در Database بریزی نباید فرمت multipart/form-data داشته باشه . پس مجبوریم در دو فرم مجزا این دو را دریافت کنیم ، و چون در ASP کلاسیک نمیتونیم دو تا فرم در یه صفحه داشته باشیم بلاجبار در دو صفحه مجزا اینارو دریافت میکنیم . اول فایل رو ار کاربر گرفته و بر روی سرور Upload می کنیم ، بعد اسم فایل رو به یه صفحه دیگه ارسال کرده و با اطلاعات دیگر درون Database میریزیم .

اگه دقت کنین تقریبا تمام سایت هایی که از شا فایل می گیرند ، فرم ارسال فایل در یه پنجره جدید باز میشه .


یه چیزی مثل Attachment همین سایت که میتونین فایل رو سرور بریزید .

وقتی که وارد قسمت Post Reply میشید اون پایین Manage Attachments بزنید و به عنوان مثال یه فایل رو Upload کنید .تا کاملا متوجه منظور من بشید.

من دقیقاً همچین چیزی می خوام .


البته اینو هم اضافه کنم که در برنامه Upload مشکل ندارم . مشکل من ارسال اسم فایل ار صفحه upload به صفحه دیگه می باشد .
دقیقاً همین کار رو اینجا انجام دادن .:( :wacko:
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
خیلی جالبه

یعنی اینجا کسی نمی تونه به سوال من جولب بده ... ؟؟؟
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
نميدونم درست فهميدم يا نه.نميشه از modal Dialog استفاده كرد و اطلاعات صفحه ي آپلود رو به صفحه ي اصلي فرستاد؟
مثلا اين رو ببين :

کد:
main page :
<form id=frm>
<input type="text" id=file_address>
<input type="button" value="Upload" onclick="frm.file_address.value = showModalDialog('upload.asp','Upload a file','resizable: yes; help: no; status: no; scroll: no;');">
...
...
<input type = submit>
</form>


upload page : 
<body onunload="window.returnValue = file_address_main.value;window.close();">
<input type="text" id=file_address_main>

</body>


اينطوري وقتي پنجره ي آپلود بسته ميشه اطلاعات توي تكست باكس به پنجره ي اصلي فرستاده ميشه و پنجره ي اصلي هم اون رو توي تكست باكس قرار ميده
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
آقا دمت گرم Plus جان خیلی ممنون
خداییش ثواب کردی

میرم امتحان کنم
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
آقای Plus این که شما فرمودین درست کار میکنه ولی برای Upload نمیشه استفاده کرد.

این صفحه Upload.asp​


HTML:
<%

'********************************************************************************
'Property Variables
'********************************************************************************
const ForReading   = 1
const ForWriting   = 2
const ForAppending = 3

dim FileCount  'Number of files uploaded
dim FieldCount 'Number of fields uploaded
dim Path       'Path to store files in
dim Dict       'pointer to a Scripting.Dictionary object with form data

Path        = Server.mappath(".") & "\file\"
FileCount   = 0
FieldCount  = 0
Dict        = Null




Function Init()
    
    Dim tBytes
    Dim binData
    Dim scrDict

    tBytes      = Request.TotalBytes
    RequestBin  = Request.BinaryRead(tBytes)

    Set scrDict = Server.CreateObject("Scripting.Dictionary")

    PosBeg      = 1
    PosEnd      = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

    If PosEnd < 2 Then 
	Set Dict = Server.CreateObject("Scripting.Dictionary")
	Exit Function
    End If

    boundary    = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
    BoundaryPos = InStrB(1, RequestBin, boundary)

    Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))
        Dim UploadControl
        Set UploadControl = Server.CreateObject("Scripting.Dictionary")
        Pos               = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition"))
        Pos               = InStrB(Pos, RequestBin, getByteString("name="))
        PosBeg            = Pos + 6
        PosEnd            = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
        Name              = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        PosFile           = InStrB(BoundaryPos, RequestBin, getByteString("filename="))
        PosBound          = InStrB(PosEnd, RequestBin, boundary)
        
        If PosFile <> 0 And (PosFile < PosBound) Then
            FileCount = FileCount + 1
            PosBeg    = PosFile + 10
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
            FileName  = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "FileName", FileName
            Pos       = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
            PosBeg    = Pos + 14
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
            ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "ContentType", ContentType
            PosBeg    = PosEnd + 4
            PosEnd    = InStrB(PosBeg, RequestBin, boundary) - 2
            Value     = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
        Else
            FieldCount = FieldCount + 1
            Pos        = InStrB(Pos, RequestBin, getByteString(Chr(13)))
            PosBeg     = Pos + 4
            PosEnd     = InStrB(PosBeg, RequestBin, boundary) - 2
            Value      = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        End If
        
        UploadControl.Add "Value", Value
        scrDict.Add Name, UploadControl
        BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
    Loop
    
    Set Dict = scrDict
    Set scrDict = Nothing

End Function



Function saveAs( sHTMLFormField, sNewFile)

    If Dict.Exists(sHTMLFormField) And Len(getFileName(sHTMLFormField)) > 0 Then

        binData = Dict.Item( sHTMLFormField).Item("Value")
        binData = getString( binData)

        Dim sFilePath
        sFilePath = Path & getFileName(sHTMLFormField)
        If Len( sNewFile) <> 0 Then	sFilePath = sNewFile

        Set oFSO = Server.CreateObject( "Scripting.FileSystemObject")  '- create the transfer file using Scripting.FileSystemObject  ...

        Set oTextStream = oFSO.CreateTextFile( sFilePath, True)        '- create a file binary write
        oTextStream.Write( binData)                                    '- write binData to the file
        oTextStream.Close                                              '- close the file

        saveAs = True

     Else

'	Response.Write( "File associated with HTML &lt;FORM&gt; field name &lt;INPUT NAME=" & sHTMLFormField & "&gt; not found!")
        saveAs = False

     End If

End Function



Function getData(sHTMLFormField)

    If Dict.Exists(sHTMLFormField) Then
        getData = Dict.Item( sHTMLFormField).Item("Value")
    Else
        getData = ""
    End If
End Function



Function getFileName(sHTMLFormField)

    Dim strHTMLFormField
    If Dict.Exists(sHTMLFormField) Then
        strHTMLFormField = Dict.Item( sHTMLFormField).Item("FileName")
    Else
        strHTMLFormField = ""
    End If

    Dim tPos
    Dim strRtn
    strRtn = ""
    tPos = InStrRev(strHTMLFormField, "\")
    If tPos = 0 Or IsNull(tPos) Then
        strRtn = strHTMLFormField
    Else
        strRtn = Right(strHTMLFormField, Len(strHTMLFormField) - tPos)
    End If
    
    getFileName = strRtn

End Function



Function getContentType(sHTMLFormField)
    If Dict.Exists(sHTMLFormField) Then
        getContentType = Dict.Item( sHTMLFormField).Item("ContentType")
    Else
        getContentType = ""
    End If
End Function




Function getString(StringBin)
    Dim strRtn
    strRtn = ""
    For intCount = 1 To LenB(StringBin)
        strRtn = strRtn & Chr(AscB(MidB(StringBin, intCount, 1)))
    Next
    getString = strRtn
End Function



Function getByteString(StringStr)
    Dim strRtn
    strRtn = ""
    For i = 1 To Len(StringStr)
        Char   = Mid(StringStr, i, 1)
        strRtn = strRtn & ChrB(AscB(Char))
    Next
    getByteString = strRtn
End Function

%>


<HTML>
<HEAD>
</HEAD>
<BODY onunload="window.returnValue = AttachName_R_Send_Email.value; window.close();">


<A HREF="../../../Inetpub/wwwroot/ASPFileUpl211386142001/uploadtest.asp">Clear/Refresh</A>


<%
Dim UpName
If Len( Request.TotalBytes) > 0 Then

	Init     '- function in uploadit.inc that pulls out the file and all the form data

	Response.Expires=0 
	Response.ExpiresAbsolute=#May 31,1996 13:30:15# 
	Server.ScriptTimeout = 100 
	

	Response.Write("<BR>Uploaded File Name: " & getFileName("fName"))


'	Response.Write("<BR>Save Path: " & Path)

	Response.Write("<BR>" & saveAs("fName",""))
	UpName = saveAs("fName","")
	
'	Response.Write("<BR>Results of trying to save a file you didnt upload: " &  saveAs("txtName",""))


	Response.Write("<BR>")

End If

%>
<input type="hidden" id=AttachName_R value="<%=UpName%>">
<BR>
<FORM name=frmTest ACTION=Upload.asp method=post enctype="multipart/form-data">

<INPUT type="file" name="fName"><BR>
<INPUT TYPE=SUBMIT NAME=cmdSubmit VALUE="SUBMIT File">
</FORM>

</BODY>
</HTML>


اینم صفحه Main.asp​

HTML:
<html>

<head>
<title>No title</title>
<meta name="generator" content="Namo WebEditor v6.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table width="603" align="center" style="border-width:1; border-color:rgb(0,0,153); border-style:solid;" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="597" height="15" valign="top" colspan="2">
            <form name="form1">
<input type="text" id=AttachName_R name="AttachName" size="62" style="text-align:left;">
            </form>
        </td>
    </tr>
    <tr>
        <td width="597" height="10" valign="top" colspan="2">
            <form name="form2">
<input type="button" name="EmailAttach" value="  Attachment  " style="text-align:center;">
            </form>
        </td>
    </tr>
</table>
<p>&nbsp;</p>
</body>

</html>
 

amin1us

کاربر تازه وارد
تاریخ عضویت
2 ژوئن 2004
نوشته‌ها
199
لایک‌ها
0
به نقل از mehdi25 :
آقای Plus این که شما فرمودین درست کار میکنه ولی برای Upload نمیشه استفاده کرد.

این صفحه Upload.asp​


HTML:
<%

'********************************************************************************
'Property Variables
'********************************************************************************
const ForReading   = 1
const ForWriting   = 2
const ForAppending = 3

dim FileCount  'Number of files uploaded
dim FieldCount 'Number of fields uploaded
dim Path       'Path to store files in
dim Dict       'pointer to a Scripting.Dictionary object with form data

Path        = Server.mappath(".") & "\file\"
FileCount   = 0
FieldCount  = 0
Dict        = Null




Function Init()
    
    Dim tBytes
    Dim binData
    Dim scrDict

    tBytes      = Request.TotalBytes
    RequestBin  = Request.BinaryRead(tBytes)

    Set scrDict = Server.CreateObject("Scripting.Dictionary")

    PosBeg      = 1
    PosEnd      = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

    If PosEnd < 2 Then 
	Set Dict = Server.CreateObject("Scripting.Dictionary")
	Exit Function
    End If

    boundary    = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
    BoundaryPos = InStrB(1, RequestBin, boundary)

    Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))
        Dim UploadControl
        Set UploadControl = Server.CreateObject("Scripting.Dictionary")
        Pos               = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition"))
        Pos               = InStrB(Pos, RequestBin, getByteString("name="))
        PosBeg            = Pos + 6
        PosEnd            = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
        Name              = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        PosFile           = InStrB(BoundaryPos, RequestBin, getByteString("filename="))
        PosBound          = InStrB(PosEnd, RequestBin, boundary)
        
        If PosFile <> 0 And (PosFile < PosBound) Then
            FileCount = FileCount + 1
            PosBeg    = PosFile + 10
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
            FileName  = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "FileName", FileName
            Pos       = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
            PosBeg    = Pos + 14
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
            ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "ContentType", ContentType
            PosBeg    = PosEnd + 4
            PosEnd    = InStrB(PosBeg, RequestBin, boundary) - 2
            Value     = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
        Else
            FieldCount = FieldCount + 1
            Pos        = InStrB(Pos, RequestBin, getByteString(Chr(13)))
            PosBeg     = Pos + 4
            PosEnd     = InStrB(PosBeg, RequestBin, boundary) - 2
            Value      = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        End If
        
        UploadControl.Add "Value", Value
        scrDict.Add Name, UploadControl
        BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
    Loop
    
    Set Dict = scrDict
    Set scrDict = Nothing

End Function



Function saveAs( sHTMLFormField, sNewFile)

    If Dict.Exists(sHTMLFormField) And Len(getFileName(sHTMLFormField)) > 0 Then

        binData = Dict.Item( sHTMLFormField).Item("Value")
        binData = getString( binData)

        Dim sFilePath
        sFilePath = Path & getFileName(sHTMLFormField)
        If Len( sNewFile) <> 0 Then	sFilePath = sNewFile

        Set oFSO = Server.CreateObject( "Scripting.FileSystemObject")  '- create the transfer file using Scripting.FileSystemObject  ...

        Set oTextStream = oFSO.CreateTextFile( sFilePath, True)        '- create a file binary write
        oTextStream.Write( binData)                                    '- write binData to the file
        oTextStream.Close                                              '- close the file

        saveAs = True

     Else

'	Response.Write( "File associated with HTML &lt;FORM&gt; field name &lt;INPUT NAME=" & sHTMLFormField & "&gt; not found!")
        saveAs = False

     End If

End Function



Function getData(sHTMLFormField)

    If Dict.Exists(sHTMLFormField) Then
        getData = Dict.Item( sHTMLFormField).Item("Value")
    Else
        getData = ""
    End If
End Function



Function getFileName(sHTMLFormField)

    Dim strHTMLFormField
    If Dict.Exists(sHTMLFormField) Then
        strHTMLFormField = Dict.Item( sHTMLFormField).Item("FileName")
    Else
        strHTMLFormField = ""
    End If

    Dim tPos
    Dim strRtn
    strRtn = ""
    tPos = InStrRev(strHTMLFormField, "\")
    If tPos = 0 Or IsNull(tPos) Then
        strRtn = strHTMLFormField
    Else
        strRtn = Right(strHTMLFormField, Len(strHTMLFormField) - tPos)
    End If
    
    getFileName = strRtn

End Function



Function getContentType(sHTMLFormField)
    If Dict.Exists(sHTMLFormField) Then
        getContentType = Dict.Item( sHTMLFormField).Item("ContentType")
    Else
        getContentType = ""
    End If
End Function




Function getString(StringBin)
    Dim strRtn
    strRtn = ""
    For intCount = 1 To LenB(StringBin)
        strRtn = strRtn & Chr(AscB(MidB(StringBin, intCount, 1)))
    Next
    getString = strRtn
End Function



Function getByteString(StringStr)
    Dim strRtn
    strRtn = ""
    For i = 1 To Len(StringStr)
        Char   = Mid(StringStr, i, 1)
        strRtn = strRtn & ChrB(AscB(Char))
    Next
    getByteString = strRtn
End Function

%>


<HTML>
<HEAD>
</HEAD>
<BODY onunload="window.returnValue = AttachName_R_Send_Email.value; window.close();">


<A HREF="../../../Inetpub/wwwroot/ASPFileUpl211386142001/uploadtest.asp">Clear/Refresh</A>


<%
Dim UpName
If Len( Request.TotalBytes) > 0 Then

	Init     '- function in uploadit.inc that pulls out the file and all the form data

	Response.Expires=0 
	Response.ExpiresAbsolute=#May 31,1996 13:30:15# 
	Server.ScriptTimeout = 100 
	

	Response.Write("<BR>Uploaded File Name: " & getFileName("fName"))


'	Response.Write("<BR>Save Path: " & Path)

	Response.Write("<BR>" & saveAs("fName",""))
	UpName = saveAs("fName","")
	
'	Response.Write("<BR>Results of trying to save a file you didnt upload: " &  saveAs("txtName",""))


	Response.Write("<BR>")

End If

%>
<input type="hidden" id=AttachName_R value="<%=UpName%>">
<BR>
<FORM name=frmTest ACTION=Upload.asp method=post enctype="multipart/form-data">

<INPUT type="file" name="fName"><BR>
<INPUT TYPE=SUBMIT NAME=cmdSubmit VALUE="SUBMIT File">
</FORM>

</BODY>
</HTML>


اینم صفحه Main.asp​

HTML:
<html>

<head>
<title>No title</title>
<meta name="generator" content="Namo WebEditor v6.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table width="603" align="center" style="border-width:1; border-color:rgb(0,0,153); border-style:solid;" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="597" height="15" valign="top" colspan="2">
            <form name="form1">
<input type="text" id=AttachName_R name="AttachName" size="62" style="text-align:left;">
            </form>
        </td>
    </tr>
    <tr>
        <td width="597" height="10" valign="top" colspan="2">
            <form name="form2">
<input type="button" name="EmailAttach" value="  Attachment  " style="text-align:center;">
            </form>
        </td>
    </tr>
</table>
<p>&nbsp;</p>
</body>

</html>

چرا از کامپوننت ها استفاده نمی کنی
خیلی ساده تر و با امکانات بیشتره
مثلا Persits ASPUpload
خیلی راحته
موفق باشی
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
سلام .توي كدي كه نوشتين توي فايل main.asp اثري از اسكريپتي كه من گذاشته بودم نيست يعني اين :
کد:
<input type="button" value="Upload" onclick="frm.file_address.value = showModalDialog('upload.asp','Upload a file','resizable: yes; help: no; status: no; scroll: no;');">

مشكل همينه يا ارر ديگه اي ميده؟ لطفاكامل مشكل رو بنويسين
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
به نقل از plus :
سلام .توي كدي كه نوشتين توي فايل main.asp اثري از اسكريپتي كه من گذاشته بودم نيست يعني اين :
کد:
<input type="button" value="Upload" onclick="frm.file_address.value = showModalDialog('upload.asp','Upload a file','resizable: yes; help: no; status: no; scroll: no;');">

مشكل همينه يا ارر ديگه اي ميده؟ لطفاكامل مشكل رو بنويسين

درسته اون اسکریپت شما جواب نمیده.
با زدن Button ، Upload برای این که فایل Upload بشه Action ی که برای فورم تعریف شده به خود صفحه باز میگردونه . وقتی که این عمل صورت می گیره یه صفحه دیگه باز میشه .

فکر میکنم یکم گیچ کننده توضیح دادم . :( این دوتا فایل رو خودت کپی پیست کن یه بار اجرا کن میفهمی​


Main.asp

HTML:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>


<head>
<title>Check E-Mail</title>
<SCRIPT  language="JavaScript">
<!-- Hide from older browsers
	
//Check the enquiry form is filled in correctly
function CheckForm () { 

	//Initialise variables
	var errorMsg = "";

	//Check for an e-mail address and that it is valid
	if ((document.FormEmail.EmailTo.value == "") || (document.FormEmail.EmailTo.value.length > 0 && (document.FormEmail.EmailTo.value.indexOf("@",0) == - 1 || document.FormEmail.EmailTo.value.indexOf(".",0) == - 1))) { 
		errorMsg += "\n\tE-mail Address \t- Enter valid E-mail Address";
	}

	//Check for a Subject
	if (document.FormEmail.EmailSubject.value == ""){
		errorMsg += "\n\tSubject \t\t- Enter your Subject";
	}
			
	//Check for an enquiry
	if (document.FormEmail.EmailBody.value == "") { 
 		errorMsg += "\n\tEnquiry \t\t- Enter an enquiry";
	}
		
	//If there is aproblem with the form then display an error
	if (errorMsg != ""){
		msg = "______________________________________________________________\n\n";
		msg += "Your enquiry has not been sent because there are problem(s) with the form.\n";
		msg += "Please correct the problem(s) and re-submit the form.\n";
		msg += "______________________________________________________________\n\n";
		msg += "The following field(s) need to be corrected: -\n";
		
		errorMsg += alert(msg + errorMsg + "\n\n");
		return false;
	}
	
	return true;
}
// -->
</script>
<meta http-equiv="content-type" content="text/html; charset=utf-8">



<script language="JavaScript">
<!--
function namosw_cell_rollout(cell)
{
  if (document.all || document.getElementById) {
    cell.className   = cell.classBackup;
  }
}
// --></script>

</head>

<body bgcolor="#E3ECFF">
<form method="post" name="FormEmail" action="<%=MM_SaveAction%>"  onSubmit="return CheckForm ();">
    <table width="603" align="center" style="border-width:1; border-color:rgb(0,0,153); border-style:solid;" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
        <tr>
            <td width="597" height="30" colspan="2" align="right" dir=rtl bgcolor="#E3E6FF">
                <p align="center"><font size="4"><b>Edit&nbsp;&amp;&nbsp;Forward E-mail</b></font></p>
            </td>
        </tr>
        <tr>
            <td width="125" height="12">

                <p>&nbsp;</td>
            <td width="468" height="30" dir=rtl>

                <p align="right">&nbsp;امروز : &nbsp;</p>
            </td>
        </tr>
        <tr>
            <td width="125" height="18">
                <p style="margin-left:5px;"><font color="blue">Forward E-Mail</font></td>
            <td width="468" height="30">

                <p><font size="2" face="Tahoma"><input type="Button" name="Button" value="EN / FR" onclick=change(FormEmail) style="font-family:Tahoma; font-size:12px; text-align:center;"></font></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">To : *</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailTo" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">Cc :</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailCc" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30" OnMouseOut="namosw_cell_rollout(this)">
                <p style="margin-left:5px;">Bcc :</p>
            </td>
            <td width="468" height="30" OnMouseOut="namosw_cell_rollout(this)"><input type="text" name="EmailBcc" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">Subject : *</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailSubject" onkeypress=FKeyPress(FormEmail); onkeydown=FKeyDown(FormEmail); style="text-align:left;" size="35"></td>
        </tr>
        <tr>
            <td width="125" height="177" valign="top">
                <p style="margin-left:5px;">Message : *</p>
            </td>
            <td width="468" height="177"><textarea name="EmailBody" rows="14" cols="65" onkeypress=FKeyPress(FormEmail); onkeydown=FKeyDown(FormEmail); dir=rtl></textarea></td>
        </tr>
        <tr>
            <td width="125" height="30" valign="middle">

                <p align="center"><input type="reset" name="formbutton2" value="  Clear  " style="text-align:center;"></p>
            </td>
            <td width="468" height="30" valign="middle">
<input type="button" value="Cancel" style="font-family:Tahoma,'Courier New',Arial,Verdana; font-size:12px; text-align:center;" onClick="javascript:history.go(-1)">
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="formbutton1" value="  Send E-Mail  " style="text-align:center;"> </td>
        </tr>
<tr>
            <td width="597" height="15" valign="top" colspan="2"><input type="text" id=AttachName_R name="AttachName" size="62" style="text-align:left;"></td>
                    </tr>
        <tr>
            <td width="597" height="10" valign="top" colspan="2"><input type="button" name="EmailAttach" value="  Attachment  " style="text-align:center;" onclick="FormEmail.AttachName_R.value = showModalDialog('upAttach.asp','Upload a file','resizable: no; help: no; status: no; scroll: no;');"></td>
        </tr>
    </table>
    <p>&nbsp;</p>


<p>&nbsp;</p>


<p>
<input type="hidden" name="MM_insert" value="FormEmail">
<input type="hidden" name="FrDate" value="<%= NumDate %>">
</p>
</form>

</body>

</html>

UpAttach.asp
HTML:
<%

'********************************************************************************
'Property Variables
'********************************************************************************
const ForReading   = 1
const ForWriting   = 2
const ForAppending = 3

dim FileCount  'Number of files uploaded
dim FieldCount 'Number of fields uploaded
dim Path       'Path to store files in
dim Dict       'pointer to a Scripting.Dictionary object with form data

Path        = Server.mappath(".") & "\"
FileCount   = 0
FieldCount  = 0
Dict        = Null




Function Init()
    
    Dim tBytes
    Dim binData
    Dim scrDict

    tBytes      = Request.TotalBytes
    RequestBin  = Request.BinaryRead(tBytes)

    Set scrDict = Server.CreateObject("Scripting.Dictionary")

    PosBeg      = 1
    PosEnd      = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

    If PosEnd < 2 Then 
	Set Dict = Server.CreateObject("Scripting.Dictionary")
	Exit Function
    End If

    boundary    = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
    BoundaryPos = InStrB(1, RequestBin, boundary)

    Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))
        Dim UploadControl
        Set UploadControl = Server.CreateObject("Scripting.Dictionary")
        Pos               = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition"))
        Pos               = InStrB(Pos, RequestBin, getByteString("name="))
        PosBeg            = Pos + 6
        PosEnd            = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
        Name              = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        PosFile           = InStrB(BoundaryPos, RequestBin, getByteString("filename="))
        PosBound          = InStrB(PosEnd, RequestBin, boundary)
        
        If PosFile <> 0 And (PosFile < PosBound) Then
            FileCount = FileCount + 1
            PosBeg    = PosFile + 10
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
            FileName  = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "FileName", FileName
            Pos       = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
            PosBeg    = Pos + 14
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
            ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "ContentType", ContentType
            PosBeg    = PosEnd + 4
            PosEnd    = InStrB(PosBeg, RequestBin, boundary) - 2
            Value     = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
        Else
            FieldCount = FieldCount + 1
            Pos        = InStrB(Pos, RequestBin, getByteString(Chr(13)))
            PosBeg     = Pos + 4
            PosEnd     = InStrB(PosBeg, RequestBin, boundary) - 2
            Value      = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        End If
        
        UploadControl.Add "Value", Value
        scrDict.Add Name, UploadControl
        BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
    Loop
    
    Set Dict = scrDict
    Set scrDict = Nothing

End Function



Function saveAs( sHTMLFormField, sNewFile)

    If Dict.Exists(sHTMLFormField) And Len(getFileName(sHTMLFormField)) > 0 Then

        binData = Dict.Item( sHTMLFormField).Item("Value")
        binData = getString( binData)

        Dim sFilePath
        sFilePath = Path & getFileName(sHTMLFormField)
        If Len( sNewFile) <> 0 Then	sFilePath = sNewFile

        Set oFSO = Server.CreateObject( "Scripting.FileSystemObject")  '- create the transfer file using Scripting.FileSystemObject  ...

        Set oTextStream = oFSO.CreateTextFile( sFilePath, True)        '- create a file binary write
        oTextStream.Write( binData)                                    '- write binData to the file
        oTextStream.Close                                              '- close the file

        saveAs = True

     Else

'	Response.Write( "File associated with HTML &lt;FORM&gt; field name &lt;INPUT NAME=" & sHTMLFormField & "&gt; not found!")
        saveAs = False

     End If

End Function



Function getData(sHTMLFormField)

    If Dict.Exists(sHTMLFormField) Then
        getData = Dict.Item( sHTMLFormField).Item("Value")
    Else
        getData = ""
    End If
End Function



Function getFileName(sHTMLFormField)

    Dim strHTMLFormField
    If Dict.Exists(sHTMLFormField) Then
        strHTMLFormField = Dict.Item( sHTMLFormField).Item("FileName")
    Else
        strHTMLFormField = ""
    End If

    Dim tPos
    Dim strRtn
    strRtn = ""
    tPos = InStrRev(strHTMLFormField, "\")
    If tPos = 0 Or IsNull(tPos) Then
        strRtn = strHTMLFormField
    Else
        strRtn = Right(strHTMLFormField, Len(strHTMLFormField) - tPos)
    End If
    
    getFileName = strRtn

End Function



Function getContentType(sHTMLFormField)
    If Dict.Exists(sHTMLFormField) Then
        getContentType = Dict.Item( sHTMLFormField).Item("ContentType")
    Else
        getContentType = ""
    End If
End Function




Function getString(StringBin)
    Dim strRtn
    strRtn = ""
    For intCount = 1 To LenB(StringBin)
        strRtn = strRtn & Chr(AscB(MidB(StringBin, intCount, 1)))
    Next
    getString = strRtn
End Function



Function getByteString(StringStr)
    Dim strRtn
    strRtn = ""
    For i = 1 To Len(StringStr)
        Char   = Mid(StringStr, i, 1)
        strRtn = strRtn & ChrB(AscB(Char))
    Next
    getByteString = strRtn
End Function

%>


<HTML>
<HEAD>
</HEAD>
<BODY onunload="window.returnValue = AttachName_R.value; window.close();">


<A HREF="uploadtest.asp">Clear/Refresh</A>


<%
Dim UpName
If Len( Request.TotalBytes) > 0 Then

	Init     '- function in uploadit.inc that pulls out the file and all the form data

	Response.Expires=0 
	Response.ExpiresAbsolute=#May 31,1996 13:30:15# 
	Server.ScriptTimeout = 100 
	

	Response.Write("<BR>Uploaded File Name: " & getFileName("fName"))


'	Response.Write("<BR>Save Path: " & Path)

	Response.Write("<BR>" & saveAs("fName",""))
	UpName = saveAs("fName","")
	
'	Response.Write("<BR>Results of trying to save a file you didnt upload: " &  saveAs("txtName",""))


	Response.Write("<BR>")

End If

%>
<BR>
<INPUT type="text" id=AttachName_R  name="fName" value=<%=UpName%>>
<FORM name=frmTest ACTION=upAttach.asp method=post enctype="multipart/form-data">

<INPUT type="file" id=AttachName_R  name="fName"><BR>
<INPUT TYPE=SUBMIT NAME=cmdSubmit VALUE="SUBMIT File">
</FORM>

</BODY>
</HTML>
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
درسته! توي صفحه ي جديد باز ميشه...يكم روش كار ميكنم ببينم مشكل كجاست...
-----------------------

اينطوري كه من بهش ور رفتم به اين نتيجه رسيدم كه بيخياله dialog شي.يه راه واسه ارسال اطلاعات بين صفحه ها با جاوا اسكريپت استفاده از كوكي هاست.
با اين كدي كه نوشتم وقتي توي صفحه ي اصلي روي attach كليك بشه يه اسكريپت پشت سر هم به فاصله ي يك ثانيه مقدار كوكي filename رو چك ميكنه اگه وجود داشت مقدار توي تكست باكس رو تغيير ميده.توي پنجره ي attach هم وقتي فرم سابميت بشه كوكيfilename برابر مقدار جديد ميشه.وقتي هم كه صفحه ي اصلي بسته ميشه كوكي پاك ميشه :


کد:
m a i n . a s p  :

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>


<head>
<title>Check E-Mail</title>
<SCRIPT  language="JavaScript">
<!-- Hide from older browsers
	
//Check the enquiry form is filled in correctly
function CheckForm () { 

	//Initialise variables
	var errorMsg = "";

	//Check for an e-mail address and that it is valid
	if ((document.FormEmail.EmailTo.value == "") || (document.FormEmail.EmailTo.value.length > 0 && (document.FormEmail.EmailTo.value.indexOf("@",0) == - 1 || document.FormEmail.EmailTo.value.indexOf(".",0) == - 1))) { 
		errorMsg += "\n\tE-mail Address \t- Enter valid E-mail Address";
	}

	//Check for a Subject
	if (document.FormEmail.EmailSubject.value == ""){
		errorMsg += "\n\tSubject \t\t- Enter your Subject";
	}
			
	//Check for an enquiry
	if (document.FormEmail.EmailBody.value == "") { 
 		errorMsg += "\n\tEnquiry \t\t- Enter an enquiry";
	}
		
	//If there is aproblem with the form then display an error
	if (errorMsg != ""){
		msg = "______________________________________________________________\n\n";
		msg += "Your enquiry has not been sent because there are problem(s) with the form.\n";
		msg += "Please correct the problem(s) and re-submit the form.\n";
		msg += "______________________________________________________________\n\n";
		msg += "The following field(s) need to be corrected: -\n";
		
		errorMsg += alert(msg + errorMsg + "\n\n");
		return false;
	}
	
	return true;
}
// -->
</script>
<meta http-equiv="content-type" content="text/html; charset=utf-8">



<script language="JavaScript">
<!--
function namosw_cell_rollout(cell)
{
  if (document.all || document.getElementById) {
    cell.className   = cell.classBackup;
  }
}
// --></script>

</head>

<body bgcolor="#E3ECFF" onunload="createCookie('filename','',-1);">
<script langauhe=javascript>
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
</script>
<form method="post" name="FormEmail" action="<%=MM_SaveAction%>"  onSubmit="return CheckForm ();">
    <table width="603" align="center" style="border-width:1; border-color:rgb(0,0,153); border-style:solid;" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
        <tr>
            <td width="597" height="30" colspan="2" align="right" dir=rtl bgcolor="#E3E6FF">
                <p align="center"><font size="4"><b>Edit&nbsp;&amp;&nbsp;Forward E-mail</b></font></p>
            </td>
        </tr>
        <tr>
            <td width="125" height="12">

                <p>&nbsp;</td>
            <td width="468" height="30" dir=rtl>

                <p align="right">&nbsp;امروز : &nbsp;</p>
            </td>
        </tr>
        <tr>
            <td width="125" height="18">
                <p style="margin-left:5px;"><font color="blue">Forward E-Mail</font></td>
            <td width="468" height="30">

                <p><font size="2" face="Tahoma"><input type="Button" name="Button" value="EN / FR" onclick=change(FormEmail) style="font-family:Tahoma; font-size:12px; text-align:center;"></font></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">To : *</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailTo" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">Cc :</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailCc" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30" OnMouseOut="namosw_cell_rollout(this)">
                <p style="margin-left:5px;">Bcc :</p>
            </td>
            <td width="468" height="30" OnMouseOut="namosw_cell_rollout(this)"><input type="text" name="EmailBcc" style="text-align:left;" size="25"></td>
        </tr>
        <tr>
            <td width="125" height="30">
                <p style="margin-left:5px;">Subject : *</p>
            </td>
            <td width="468" height="30"><input type="text" name="EmailSubject" onkeypress=FKeyPress(FormEmail); onkeydown=FKeyDown(FormEmail); style="text-align:left;" size="35"></td>
        </tr>
        <tr>
            <td width="125" height="177" valign="top">
                <p style="margin-left:5px;">Message : *</p>
            </td>
            <td width="468" height="177"><textarea name="EmailBody" rows="14" cols="65" onkeypress=FKeyPress(FormEmail); onkeydown=FKeyDown(FormEmail); dir=rtl></textarea></td>
        </tr>
        <tr>
            <td width="125" height="30" valign="middle">

                <p align="center"><input type="reset" name="formbutton2" value="  Clear  " style="text-align:center;"></p>
            </td>
            <td width="468" height="30" valign="middle">
<input type="button" value="Cancel" style="font-family:Tahoma,'Courier New',Arial,Verdana; font-size:12px; text-align:center;" onClick="javascript:history.go(-1)">
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="formbutton1" value="  Send E-Mail  " style="text-align:center;"> </td>
        </tr>
<tr>
            <td width="597" height="15" valign="top" colspan="2"><input type="text" id=AttachName_R name="AttachName" size="62" style="text-align:left;"></td>
                    </tr>
        <tr>
            <td width="597" height="10" valign="top" colspan="2"><input type="button" name="EmailAttach" value="  Attachment  " style="text-align:center;" onclick="window.open('upAttach.asp',null,'width=350, height=400, scrollbars=yes, resizable=no');cookie_check()">
	<script langauge=javascript>
		function readCookie(name)
		{
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++)
			{
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		}

		function cookie_check() {
			var ck = readCookie('filename')
			if (ck!=null) {
				FormEmail.AttachName_R.value = ck ;	
			}
			setTimeout('cookie_check()',1000,'javascript');		
		}
	</script>
</td>
        </tr>
    </table>
    <p>&nbsp;</p>


<p>&nbsp;</p>


<p>
<input type="hidden" name="MM_insert" value="FormEmail">
<input type="hidden" name="FrDate" value="<%= NumDate %>">
</p>
</form>

</body>

</html>

کد:
u p a t t a c h . a s p :

<%

'********************************************************************************
'Property Variables
'********************************************************************************
const ForReading   = 1
const ForWriting   = 2
const ForAppending = 3

dim FileCount  'Number of files uploaded
dim FieldCount 'Number of fields uploaded
dim Path       'Path to store files in
dim Dict       'pointer to a Scripting.Dictionary object with form data

Path        = Server.mappath(".") & "\"
FileCount   = 0
FieldCount  = 0
Dict        = Null




Function Init()
    
    Dim tBytes
    Dim binData
    Dim scrDict

    tBytes      = Request.TotalBytes
    RequestBin  = Request.BinaryRead(tBytes)

    Set scrDict = Server.CreateObject("Scripting.Dictionary")

    PosBeg      = 1
    PosEnd      = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

    If PosEnd < 2 Then 
	Set Dict = Server.CreateObject("Scripting.Dictionary")
	Exit Function
    End If

    boundary    = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
    BoundaryPos = InStrB(1, RequestBin, boundary)

    Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))
        Dim UploadControl
        Set UploadControl = Server.CreateObject("Scripting.Dictionary")
        Pos               = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition"))
        Pos               = InStrB(Pos, RequestBin, getByteString("name="))
        PosBeg            = Pos + 6
        PosEnd            = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
        Name              = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        PosFile           = InStrB(BoundaryPos, RequestBin, getByteString("filename="))
        PosBound          = InStrB(PosEnd, RequestBin, boundary)
        
        If PosFile <> 0 And (PosFile < PosBound) Then
            FileCount = FileCount + 1
            PosBeg    = PosFile + 10
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
            FileName  = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "FileName", FileName
            Pos       = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
            PosBeg    = Pos + 14
            PosEnd    = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
            ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
            UploadControl.Add "ContentType", ContentType
            PosBeg    = PosEnd + 4
            PosEnd    = InStrB(PosBeg, RequestBin, boundary) - 2
            Value     = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
        Else
            FieldCount = FieldCount + 1
            Pos        = InStrB(Pos, RequestBin, getByteString(Chr(13)))
            PosBeg     = Pos + 4
            PosEnd     = InStrB(PosBeg, RequestBin, boundary) - 2
            Value      = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
        End If
        
        UploadControl.Add "Value", Value
        scrDict.Add Name, UploadControl
        BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
    Loop
    
    Set Dict = scrDict
    Set scrDict = Nothing

End Function



Function saveAs( sHTMLFormField, sNewFile)

    If Dict.Exists(sHTMLFormField) And Len(getFileName(sHTMLFormField)) > 0 Then

        binData = Dict.Item( sHTMLFormField).Item("Value")
        binData = getString( binData)

        Dim sFilePath
        sFilePath = Path & getFileName(sHTMLFormField)
        If Len( sNewFile) <> 0 Then	sFilePath = sNewFile

        Set oFSO = Server.CreateObject( "Scripting.FileSystemObject")  '- create the transfer file using Scripting.FileSystemObject  ...

        Set oTextStream = oFSO.CreateTextFile( sFilePath, True)        '- create a file binary write
        oTextStream.Write( binData)                                    '- write binData to the file
        oTextStream.Close                                              '- close the file

        saveAs = True

     Else

'	Response.Write( "File associated with HTML &lt;FORM&gt; field name &lt;INPUT NAME=" & sHTMLFormField & "&gt; not found!")
        saveAs = False

     End If

End Function



Function getData(sHTMLFormField)

    If Dict.Exists(sHTMLFormField) Then
        getData = Dict.Item( sHTMLFormField).Item("Value")
    Else
        getData = ""
    End If
End Function



Function getFileName(sHTMLFormField)

    Dim strHTMLFormField
    If Dict.Exists(sHTMLFormField) Then
        strHTMLFormField = Dict.Item( sHTMLFormField).Item("FileName")
    Else
        strHTMLFormField = ""
    End If

    Dim tPos
    Dim strRtn
    strRtn = ""
    tPos = InStrRev(strHTMLFormField, "\")
    If tPos = 0 Or IsNull(tPos) Then
        strRtn = strHTMLFormField
    Else
        strRtn = Right(strHTMLFormField, Len(strHTMLFormField) - tPos)
    End If
    
    getFileName = strRtn

End Function



Function getContentType(sHTMLFormField)
    If Dict.Exists(sHTMLFormField) Then
        getContentType = Dict.Item( sHTMLFormField).Item("ContentType")
    Else
        getContentType = ""
    End If
End Function




Function getString(StringBin)
    Dim strRtn
    strRtn = ""
    For intCount = 1 To LenB(StringBin)
        strRtn = strRtn & Chr(AscB(MidB(StringBin, intCount, 1)))
    Next
    getString = strRtn
End Function



Function getByteString(StringStr)
    Dim strRtn
    strRtn = ""
    For i = 1 To Len(StringStr)
        Char   = Mid(StringStr, i, 1)
        strRtn = strRtn & ChrB(AscB(Char))
    Next
    getByteString = strRtn
End Function

%>


<HTML>
<HEAD>
</HEAD>
<BODY onunload=window.close();>


<A HREF="uploadtest.asp">Clear/Refresh</A>


<%
Dim UpName
If Len( Request.TotalBytes) > 0 Then

	Init     '- function in uploadit.inc that pulls out the file and all the form data

	Response.Expires=0 
	Response.ExpiresAbsolute=#May 31,1996 13:30:15# 
	Server.ScriptTimeout = 100 
	

	Response.Write("<BR>Uploaded File Name: " & getFileName("fName"))


'	Response.Write("<BR>Save Path: " & Path)

	Response.Write("<BR>" & saveAs("fName",""))
	UpName = saveAs("fName","")
	
'	Response.Write("<BR>Results of trying to save a file you didnt upload: " &  saveAs("txtName",""))


	Response.Write("<BR>")

End If

%>
<BR>
<!--<INPUT type="text" id=AttachName_R  name="fName" value=<%=UpName%>> -->
<FORM name=frmTest onsubmit="createCookie('filename',AttachName_R.value,1);" ACTION=upAttach.asp method=post enctype="multipart/form-data">
<script language=javascript>
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
</script>
<INPUT type="file" id=AttachName_R  name="fName"><BR>
<INPUT TYPE=SUBMIT NAME=cmdSubmit VALUE="SUBMIT File">
</FORM>

</BODY>
</HTML>


در ضمن فانكشن readCookie و createCookie رو از سايت http://www.quirksmode.org/js/cookies.html برداشتم ، رعايت حق كپي رايت :D :D :D
 

kouroshm

کاربر تازه وارد
تاریخ عضویت
23 سپتامبر 2005
نوشته‌ها
149
لایک‌ها
0
من نمیدونم جوابتو گرفتی یا نه چون وقت نکردم همه پست هارو درست بخونم اما من منظورتو کاملا فهمیدم اینم جوابت:

ساده ترین راه و کم دردسرترین این هست که تو اطلاعات فرمت رو بصورت QueryStriing و در قالب یک جاوا اسکریپت برای صفحه جدید به صفحه آپلود بدی. اینجوری:

کد:
<input type="button" value="upload" onClick="javascript:window.open('upload.asp?username=<%=username %>&name=<%= name %>')">

بعد عملیات آپلود رو به همراه ارسال اطلاعات در صفحه جدید انجام بدی و در پایان اطلاعات ارسال شده و احیانا محل فایل آپلودی رو به صفحه اصلی فرمت با یک اسکریپت مثل زیر برگردونی:


کد:
<input type=button" value="return" onClick="javascript:opener.window.location.href= 'myForm.asp?username=<%= username %>&name=<%= name %>&filePath=<%= uploadedFilePath %>' ; this.close()">

که در اینجا opener.window.location.href مکان پنجره باز کننده پنجره جانبی رو به لینک و QueryString تعیین شده ارجاع میده و this.close() پنجره جانبی آپلود رو میبنده.

البته باید تو فرم فیلد های صفحه اصلیت هم کمی دستکاری کنی یعنی بگی که Value رو از QueryString بگیرن مثل:


کد:
<input "name="firstname" type="text" value="<%= Request.QueryString("name") %>">
 
بالا