Avatar billede dk_gryf Nybegynder
02. marts 2004 - 10:08 Der er 6 kommentarer og
1 løsning

Viser kun 50% af de oploadede billeder

Hej
Jeg har en lille eshop hvor jeg har et problem med visning af oploadede JPG filer.
I ca. 2/3 tilfælde går det fint, billederne vises som de skal, men i resten af tilfældene går det galt, så kan disse ikke vises.
Billederne bliver oploadet korrekt og e er indført i databasen, men kan alligevel ikke vises.
Hvis jeg så begynder at gøre dem større eller mindre lykkedes det som regelen, men der skal 5 - 7 forsøg til før det lykkedes - hvis det lykkedes!!!.
Normalt er størrelsen ligegyldig - de er fra 75kb til 256kb!! og kan alligevel vises!!
Desværre ved jeg ikke nok til ASP så jeg kan sige i hvilken fil problemet må ligge, men logikken siger mig at det må være Showimage.asp som er problemet - er det ikke det, så lad mig det vide så skal kopiere det ind.

Her er Showimage.asp:
<%
DIM Filename
Filename = Request.QueryString("Filename")
If UCase(Right(Filename,3)) = "JPG" Then
    Response.ContentType = "image/jpeg"
Else
    Response.ContentType = "image/gif"
End If
Server.Transfer ("../database/"&Filename)
%>

På forhånd tak
/Mogens
Avatar billede dk_akj Nybegynder
02. marts 2004 - 10:11 #1
Det er i din upload kode det er galt.

Der er garanteret en max size du lige skal have hævet.

//akj
Avatar billede dk_gryf Nybegynder
02. marts 2004 - 10:29 #2
ØH? - her?
<!--

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function getFileExtension(filePath) { //v1.0
  fileName = ((filePath.indexOf('/') > -1) ? filePath.substring(filePath.lastIndexOf('/')+1,filePath.length) : filePath.substring(filePath.lastIndexOf('\\')+1,filePath.length));
  return fileName.substring(fileName.lastIndexOf('.')+1,fileName.length);
}

function checkFileUpload(form,extensions) { //v1.0
  document.MM_returnValue = true;
  if (extensions && extensions != '') {
    for (var i = 0; i<form.elements.length; i++) {
      field = form.elements[i];
      if (field.type.toUpperCase() != 'FILE') continue;
      if (field.value == '') {
        alert('File is required!');
        document.MM_returnValue = false;field.focus();break;
      }
      if (extensions.toUpperCase().indexOf(getFileExtension(field.value).toUpperCase()) == -1) {
        alert('This file is not allowed for uploading!');
        document.MM_returnValue = false;field.focus();break;
  } } }
}

//-->
                                          </script>
/Mogens
Avatar billede dk_akj Nybegynder
02. marts 2004 - 10:34 #3
Nej, du skal finde noget alá dette:

    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False
    Upload.SetMaxSize 52428, False

//akj
Avatar billede dk_gryf Nybegynder
02. marts 2004 - 10:53 #4
Dette?
<%
Sub BuildUploadRequest(RequestBin)
  'Get the boundary
  PosBeg = 1
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
  if PosEnd = 0 then
    Response.Write "<b>Form was submitted with no ENCTYPE=""multipart/form-data""</b><br>"
    Response.Write "Please correct the form attributes and try again."
    Response.End
  end if
  boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
  boundaryPos = InstrB(1,RequestBin,boundary)
  'Get all data inside the boundaries
  Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
    'Members variable of objects are put in a dictionary object
    Dim UploadControl
    Set UploadControl = CreateObject("Scripting.Dictionary")
    'Get an object name
    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)
    'Test if object is of file type
    If  PosFile<>0 AND (PosFile<PosBound) Then
      'Get Filename, content-type and content of file
      PosBeg = PosFile + 10
      PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
      FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
      FileName = Mid(FileName,InStrRev(FileName,"\")+1)
      'Add filename to dictionary object
      UploadControl.Add "FileName", FileName
      Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
      PosBeg = Pos+14
      PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
      'Add content-type to dictionary object
      ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
      UploadControl.Add "ContentType",ContentType
      'Get content of object
      PosBeg = PosEnd+4
      PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
      Value = FileName
      ValueBeg = PosBeg-1
      ValueLen = PosEnd-Posbeg
    Else
      'Get content of object
      Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
      PosBeg = Pos+4
      PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
      Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
      ValueBeg = 0
      ValueEnd = 0
    End If
    'Add content to dictionary object
    UploadControl.Add "Value" , Value
    UploadControl.Add "ValueBeg" , ValueBeg
    UploadControl.Add "ValueLen" , ValueLen
    'Add dictionary object to main dictionary
    UploadRequest.Add name, UploadControl
    'Loop to next object
    BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
  Loop
End Sub

'String to byte string conversion
Function getByteString(StringStr)
  For i = 1 to Len(StringStr)
      char = Mid(StringStr,i,1)
      getByteString = getByteString & chrB(AscB(char))
  Next
End Function

'Byte string to string conversion
Function getString(StringBin)
  getString =""
  For intCount = 1 to LenB(StringBin)
      getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
  Next
End Function

Function UploadFormRequest(name)
  on error resume next
  if UploadRequest.Item(name) then
    UploadFormRequest = UploadRequest.Item(name).Item("Value")
  end if
End Function

'Process the upload
UploadQueryString = Replace(Request.QueryString,"SP_upload=true","")
if mid(UploadQueryString,1,1) = "&" then
    UploadQueryString = Mid(UploadQueryString,2)
end if

SP_uploadAction = CStr(Request.ServerVariables("URL")) & "?SP_upload=true&ProductID="&Request.QueryString("ProductID")&"&Redirect="&Server.URLEncode("Productsupdate.asp?ProductID="&Request.QueryString("ProductID"))

If (CStr(Request.QueryString("SP_upload")) <> "") Then
  SP_redirectPage = "Productsupdate.asp?ProductID="&Request.QueryString("ProductID")
  If (SP_redirectPage = "") Then
    SP_redirectPage = CStr(Request.ServerVariables("URL"))
  end if

  RequestBin = Request.BinaryRead(Request.TotalBytes)
  Dim UploadRequest
  Set UploadRequest = CreateObject("Scripting.Dictionary")
  BuildUploadRequest RequestBin

  SP_keys = UploadRequest.Keys
  for SP_i = 0 to UploadRequest.Count - 1
    SP_curKey = SP_keys(SP_i)
    'Save all uploaded files
    if UploadRequest.Item(SP_curKey).Item("FileName") <> "" then
      SP_value = UploadRequest.Item(SP_curKey).Item("Value")
      SP_valueBeg = UploadRequest.Item(SP_curKey).Item("ValueBeg")
      SP_valueLen = UploadRequest.Item(SP_curKey).Item("ValueLen")

        if SP_valueLen = 0 then
        Response.Write "<B>An error has occured saving uploaded file!</B><br><br>"
        Response.Write "Filename: " & Trim(SP_curPath) & UploadRequest.Item(SP_curKey).Item("FileName") & "<br>"
        Response.Write "File does not exists or is empty.<br>"
        Response.Write "Please correct and <A HREF=""java script:history.back(1)"">try again</a>"
            response.End
        end if

            'Create a Stream instance
            Dim SP_strm1, SP_strm2
            Set SP_strm1 = Server.CreateObject("ADODB.Stream")
            Set SP_strm2 = Server.CreateObject("ADODB.Stream")

            'Open the stream
            SP_strm1.Open
            SP_strm1.Type = 1 'Binary
            SP_strm2.Open
            SP_strm2.Type = 1 'Binary

            SP_strm1.Write RequestBin
            SP_strm1.Position = SP_ValueBeg
            SP_strm1.CopyTo SP_strm2,SP_ValueLen


            'Create and Write to a File
            SP_curPath = "../../database/"
            on error resume next
            SP_strm2.SaveToFile Trim(Server.mappath(SP_curPath))& "/" & Request.QueryString("ProductID")&Right(UploadRequest.Item(SP_curKey).Item("FileName"),4),2
            'Save the filename to the database
            Dim NewFilename
            NewFilename = Request.QueryString("ProductID")&Right(UploadRequest.Item(SP_curKey).Item("FileName"),4)
            set comUpdateProducts = Server.CreateObject("ADODB.Command")
            comUpdateProducts.ActiveConnection = MM_Cart_STRING
            comUpdateProducts.CommandText = "UPDATE Products SET Picture = '"& NewFilename &"' WHERE ProductID = " & Request.QueryString("ProductID") & ""
            comUpdateProducts.CommandType = 1
            comUpdateProducts.CommandTimeout = 0
            comUpdateProducts.Prepared = true
            comUpdateProducts.Execute()

            if err then
            Response.Write "<B>An error has occured saving uploaded file!</B><br><br>"
            Response.Write "Filename: " & Trim(SP_curPath) & UploadRequest.Item(SP_curKey).Item("FileName") & "<br>"
            Response.Write "Maybe the destination directory does not exist, or you don't have write permission.<br>"
            Response.Write "Please correct and <A HREF=""java script:history.back(1)"">try again</a>"
            err.clear
            Response.End
        end if
    end if
  next
Response.Redirect(SP_redirectPage)
end if
%>
/Mogens
Avatar billede dk_akj Nybegynder
02. marts 2004 - 11:49 #5
Dooh.. Det var noget af en omgang... Der bliver åbenbart ikke brugt en upload komponent.

Jeg må desværre melde pas med den kode :-(

Har du mulighed for at bruge en upload komponent ??

//akj
Avatar billede dk_gryf Nybegynder
02. marts 2004 - 12:06 #6
Jeg ved det ikke.
/Mogens
Avatar billede dk_gryf Nybegynder
25. juni 2004 - 17:22 #7
Jeg har selv klaret det.
Mvh
Mogens
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
Kurser inden for grundlæggende programmering

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