Avatar billede ossian Nybegynder
12. juni 2006 - 02:35 Der er 8 kommentarer og
1 løsning

Hjælp til request

Hejsa,

Jeg har en form der indeholder to felter: et file-felt og et text felt.

File-feltet fanger jeg fint med

Dim myfiles As System.Web.HttpFileCollection = System.Web.HttpContext.Current.Request.Files

Med text-feltet har jeg prøvet:

Dim strGalleryTitle As String = System.Web.HttpContext.Current.Request.QueryString("galleryTitle")

Men jeg får ikke noget igennem..

Nogle gode forslag?

På forhånd tak :-)
Avatar billede arne_v Ekspert
12. juni 2006 - 02:47 #1
den er vel ikke i QueryString men i Form
Avatar billede arne_v Ekspert
12. juni 2006 - 02:48 #2
System.Web.HttpContext.Current.Request.Form("galleryTitle")
Avatar billede ossian Nybegynder
12. juni 2006 - 12:34 #3
Hmm - nææh, heller ikke :(

Det lyder jo korrekt nok, så forstår ikke hvorfor jeg ikke får det med..
Avatar billede ossian Nybegynder
12. juni 2006 - 12:36 #4
Formen ser sådan her ud:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">

<form id="Form1" runat=server>
    Title:<br />
    <asp:TextBox ID="galleryTitle" runat="server"></asp:TextBox><br />
    Files:<br />
    <asp:FileUpload ID="my_file_element" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Submit files" />
    <br />
    <asp:Label ID="fileLabel" runat="server"></asp:Label><br />
    <asp:Label ID="Label1" runat="server"></asp:Label>
    <br />
    <br />
    <asp:Label ID="bbCodeLabel" runat="server"></asp:Label></form>
<div id="files_list">
    &nbsp;</div>
<script language="javascript">
    <!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->
    var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 30 );
    <!-- Pass in the file element -->
    multi_selector.addElement( document.getElementById( 'ctl00$ContentPlaceHolder1$my_file_element' ) );


</script>
Avatar billede ossian Nybegynder
12. juni 2006 - 12:36 #5
Og vb-filen ser sådan her ud:

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
Imports MySql.Data.MySqlClient



Partial Class _Default
    Inherits System.Web.UI.Page

    Function generateUniqueFN()
        Dim dateStr As String
        Dim randomNum As Integer
        Randomize()
        randomNum = (1000000 * Rnd)

        dateStr = Year(Now()) & Month(Now()) & Day(Now()) & Hour(Now()) & Minute(Now()) & Second(Now()) & randomNum
        generateUniqueFN = dateStr
    End Function


    Private Function ThumbCallback() As Boolean
        Return False
    End Function



 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click


        'get the form file collection



        Dim myfiles As System.Web.HttpFileCollection = System.Web.HttpContext.Current.Request.Files

        Dim strGalleryTitle As String = System.Web.HttpContext.Current.Request.Form("galleryTitle")

        Dim iFile As Integer

     


        Dim uniqueKey As String
        uniqueKey = generateUniqueFN()
        Dim conn As MySqlConnection = New MySqlConnection("server=localhost; user id=root; password=adced2258f; database=imagecrack; pooling=false;")
        conn.Open()
        For iFile = 0 To myfiles.Count - 1
            ' get the posted file
            Dim postedFile As System.Web.HttpPostedFile = myfiles(iFile)



            'make sure it is not blank
            If Not postedFile.FileName.Equals("") Then

                Dim strRandom As String = generateUniqueFN()

                'Save File to the proper directory
                postedFile.SaveAs(Request.MapPath("files/") & strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName))


                '-------------------------------


                Dim FileToResize As String = Request.MapPath("files/") & strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName)

                Dim originalBitmap As Bitmap = Bitmap.FromFile(FileToResize, True)
                Dim newbmp As Bitmap = New Bitmap(160, 160)

                Dim WidthVsHeightRatio As Double = CType(originalBitmap.Width, Single) / CType(originalBitmap.Height, Single)

                Dim newg As Graphics = Graphics.FromImage(newbmp)

                newg.Clear(Color.White)
                If WidthVsHeightRatio = 1D Then
                    newg.DrawImage(originalBitmap, 0, 0, 100, 100)
                    newg.Save()
                ElseIf WidthVsHeightRatio < 1D Then    'Image is taller than wider
                    newg.DrawImage(originalBitmap, New RectangleF(New PointF(CType(100 - 365 * WidthVsHeightRatio / 2, Single), -50), New SizeF(CType(300 * WidthVsHeightRatio, Single), 300.0F)))
                    newg.Save()
                Else 'Image is wider than taller
                    Dim inverse As Double = Math.Pow(WidthVsHeightRatio, -1)
                    newg.DrawImage(originalBitmap, New RectangleF(New PointF(-50, CType(100 - 350 * inverse / 2, Single)), New SizeF(300.0F, CType(300 * inverse, Single))))
                    newg.Save()
                    'newg.SmoothingMode = System.Drawing.Drawing2D.CompositingQuality.GammaCorrected
                    'newg.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
                    ' newg.SmoothingMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor
                    newg.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
                End If

                newg.Dispose()

                newbmp.Save(Request.MapPath("files/") & "tn_" & strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName), System.Drawing.Imaging.ImageFormat.Jpeg)


                originalBitmap.Dispose()
                newbmp.Dispose()


                '-------------------------------
                Dim myFileName As String = strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName)
                Dim userIP As String = Request.UserHostAddress



                Dim cmd As MySqlCommand = New MySqlCommand("INSERT INTO images (image_filename,unique_key,user_ip) VALUES ('" & myFileName & "','" & uniqueKey & "','" & userIP & "') ", conn)
                cmd.ExecuteNonQuery()





                Label1.Text += "<a href=image.aspx?f=" & myFileName & "><img src=files/" & "tn_" & strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName) & "></a> <br />"

                Label1.Text += "File Name: " & _
                  strRandom & "_" & postedFile.FileName & "<br>"

                ' Label1.Text = strRandom & "_" + System.IO.Path.GetFileName(postedFile.FileName) & " has been uploaded"
            End If




        Next iFile
        'conn.Close()
        ' conn.Dispose()
        fileLabel.Text = "File(s):"





        ' Dim conn As MySqlConnection = New MySqlConnection("server=localhost; user id=root; password=adced2258f; database=imagecrack; pooling=false;")
        ' conn.Open()
        Using cmd As MySqlCommand = New MySqlCommand("SELECT * FROM images WHERE unique_key = '" & uniqueKey & "' ", conn)


            Dim reader As MySqlDataReader = cmd.ExecuteReader



            ' Call Read before accessing data.
            bbCodeLabel.Text &= "<textarea rows=15 cols=80>"
            While reader.Read()

                bbCodeLabel.Text &= "[URL=http://localhost:3186/imagecrack/image.aspx?f=" & reader("image_filename") & "][IMG]http://localhost:3186/upload2/files/tn_" & reader("image_filename") & "[/IMG][/URL]" & vbCrLf
            End While
            bbCodeLabel.Text &= "</textarea>"

            ' Call Close when done reading.
            reader.Close()
        End Using

        Response.Redirect("gallery.aspx?q=" & uniqueKey & "&t=" & strGalleryTitle)

    End Sub
End Class
Avatar billede thrytter Nybegynder
12. juni 2006 - 13:08 #6
Dine kontroller er pakket ind i en ContentPlaceHolder og

  System.Web.HttpContext.Current.Request.Form("galleryTitle")

giver derfor ikke mening. Prøv istedet for

  System.Web.HttpContext.Current.Request.Form(Me.galleryTitle.ClientID)

eller den normale måde

  Dim strGalleryTitle As String = Me.galleryTitle.Text
Avatar billede ossian Nybegynder
12. juni 2006 - 13:17 #7
Genialt - tak :) smid et svar..
Avatar billede thrytter Nybegynder
12. juni 2006 - 14:26 #8
Du får lige et svar og en kommentar.

multi_selector.addElement( document.getElementById( 'ctl00$ContentPlaceHolder1$my_file_element' ) );

kan udskiftes med

multi_selector.addElement(document.getElementById("<%= Me.my_file_element.ClientID %>" ) );
Avatar billede ossian Nybegynder
12. juni 2006 - 15:20 #9
thrytter> Tak for hjælpen :-)

Kan du kort give mig en lekture i hvad me, my_file_element og ClientID gør?

Jeg formoder at me henviser til aspx-sidens content place holder, men hvad nu hvis man havde flere placeholdere..

Tak..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester