[asp / mysql / Dundas Upload]Afbeeldingen soms corrupt

Pagina: 1
Acties:

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Ik heb een probleem met het uploaden van afbeeldingen naar de mysql database toe. Ik heb een formulier met een upload mogelijkheid, maar wanneer ik een afbeelding upload wil het nog wel eens voorkomen dat de afbeelding corrupt (half) in de database terecht komt.

Upload:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
            Set objUpload = Server.CreateObject("Dundas.Upload.2")

            'tijdelijk in geheugen
            objUpload.SaveToMemory
            
            'connectionstring
            strConnect = "Driver={MySQL};Server=**.**; Database=**; Uid=**; Pwd=**;"

            'recordset
            Set rs = Server.CreateObject("ADODB.Recordset")

            rs.Open "SELECT * FROM bc_images", strConnect, 2, 3

            For Each objFile In objUpload.Files
                If InStr(1,objFile.ContentType,"image") <> 0 Then
                    'add a new record and insert the image file
                    rs.AddNew
                    rs("image").Value = objFile.Binary  
                    rs("copyright").Value = objUpload.Form("copyright")
                    rs("website").Value = objUpload.Form("website")
                    rs("keywords").Value = objUpload.Form("keywords")
                    rs("tekst").Value = objUpload.Form("omschrijving")
                End If

            Next
            rs.Update
            rs.Close


            Set rs = Nothing
            Set objUpload = Nothing 
            Response.Redirect("index.asp?p=admin&amp;a=admin_viewimage")    


Ik wou het eigenlijk via een insert statement in de database gooien, maar dan krijg ik een type mismatch.

Zie dit topic:[rml][ ASP/MySQL] Type mismatch bij BLOB invoeren[/rml]/

Een foute upload:
http://www.burnincows.nl/img-db.asp?i=158

Een normale upload:
http://www.burnincows.nl/img-db.asp?i=155

Oplossing 15-10-2004:
[rml]Noork in "[ asp / mysql / Dundas Upload]Afbeeldinge..."[/rml]

[ Voor 24% gewijzigd door Phenomenon op 15-10-2004 09:38 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:05

Janoz

Moderator Devschuur®

!litemod

Ik zag net even de properties van het plaatje, en zag dat deze precies 65535 bytes groot was. Laat dat nu net 2^16 zijn. Ergens wordt je image data getruncated. Dit kan zijn door een foute tabel definitie, maar ook omdat er niet meer data in de resultset mag oid.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Hmmmm daar heb je een punt. Als ik in de database krijg is inderdaad de maximale groote 64Kb

http://www.burnincows.nl/img-db.asp?i=124

Maar het is gewoon een blob veld in Mysql, dus dat zal het probleem niet zijn lijkt me, zal eens kijken naar instellingen van de recordset of de connection.

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Nou het probleem ligt dus bij ado, dat die geen velden groter als 64kb toe laat? Maar dat lijkt me toch stug.

Nu heb ik dit:http://support.microsoft....aspx?scid=kb;en-us;194975 bij microsoft gevonden, maar moet eerst maar eens kijken of ik dat aan de praat krijg in asp.

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:20

BCC

Probleem wat ik had was hetzelfde als jij, maar bij mij lag het uiteindelijk aan de afbeelding. Op de één of andere manier zitten er soms bepaalde Codes in een afbeelding waardoor ASP tijdens het schrijven vanuit de database het halverwege opgeeft. Dit was wel icm een Access database, dus het is niet helemaal dezelfde situatie. Waarom wil je eigenlijk je afbeeldingen in een database hebben eigenlijk? Dat chached nl. niet echt lekker voor je provider.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
BCC schreef op 14 oktober 2004 @ 19:37:
Probleem wat ik had was hetzelfde als jij, maar bij mij lag het uiteindelijk aan de afbeelding. Op de één of andere manier zitten er soms bepaalde Codes in een afbeelding waardoor ASP tijdens het schrijven vanuit de database het halverwege opgeeft. Dit was wel icm een Access database, dus het is niet helemaal dezelfde situatie. Waarom wil je eigenlijk je afbeeldingen in een database hebben eigenlijk? Dat chached nl. niet echt lekker voor je provider.
Dan had ik maar wat meer schrijfruimte moeten hebben, de databasegrote maakt namelijk niet uit.

Daarbij komt dat er een zoekfunctie op heb en je kan het beschermen tegen linken.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 23:36
offtopic:
Het is niet waar je om vraagt, en waarschijnlijk weet je het al, maar ik raad je af om afbeeldingen in een MySQL-database op te slaan.
Er is een andere type database dat veel en veeeel beter overweg kan met afbeeldingen, 'het file-system' genoemt. Je kunt de afbeeldingen beter gewoon op de schijf opslaan, en het path naar de afbeelding in je database opslaan.
Er zijn ook genoeg andere manieren om hotlinken te voorkomen (oa htaccess).
Een afbeelding neemt in een database even veel ruimte in als op de schijf. Of bedoel je dat database grootte onbeperkt is?

[ Voor 23% gewijzigd door frickY op 14-10-2004 23:10 ]


  • Noork
  • Registratie: Juni 2001
  • Niet online
frickY schreef op 14 oktober 2004 @ 23:09:
offtopic:
Het is niet waar je om vraagt, en waarschijnlijk weet je het al, maar ik raad je af om afbeeldingen in een MySQL-database op te slaan.
Er is een andere type database dat veel en veeeel beter overweg kan met afbeeldingen, 'het file-system' genoemt. ...........
Zo offtopic is dat niet. Ik zou hier ook voor kiezen. Maar oke, volgens mij is dus het veld voor je afbeelding te klein.

Maak hier eens een BLOB van o.i.d.

van: http://dev.mysql.com/doc/mysql/en/Storage_requirements.html
code:
1
2
3
4
TINYBLOB, TINYTEXT  L+1 bytes, where L < 2^8    
BLOB, TEXT                 L+2 bytes, where L < 2^16    
MEDIUMBLOB, MEDIUMTEXT  L+3 bytes, where L < 2^24   
LONGBLOB, LONGTEXT  L+4 bytes, where L < 2^32

Ah beter een longblob dan.

[ Voor 26% gewijzigd door Noork op 14-10-2004 23:23 ]


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
frickY schreef op 14 oktober 2004 @ 23:09:
offtopic:
Het is niet waar je om vraagt, en waarschijnlijk weet je het al, maar ik raad je af om afbeeldingen in een MySQL-database op te slaan.
Er is een andere type database dat veel en veeeel beter overweg kan met afbeeldingen, 'het file-system' genoemt. Je kunt de afbeeldingen beter gewoon op de schijf opslaan, en het path naar de afbeelding in je database opslaan.
Er zijn ook genoeg andere manieren om hotlinken te voorkomen (oa htaccess).
Een afbeelding neemt in een database even veel ruimte in als op de schijf. Of bedoel je dat database grootte onbeperkt is?
Nou iis heeft geen htaccess toch? Ik doel erop dat ik de site host bij mijn provider en dat daar de grote van me website 25Mb is, maar die van me database maakt niet uit :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:50

gorgi_19

Kruimeltjes zijn weer op :9

frickY schreef op 14 oktober 2004 @ 23:09:
offtopic:
Het is niet waar je om vraagt, en waarschijnlijk weet je het al, maar ik raad je af om afbeeldingen in een MySQL-database op te slaan.
Er is een andere type database dat veel en veeeel beter overweg kan met afbeeldingen, 'het file-system' genoemt. Je kunt de afbeeldingen beter gewoon op de schijf opslaan, en het path naar de afbeelding in je database opslaan.
Dat is niet per definitie waar; er zijn genoeg situaties te bedenken om bestanden op te slaan in een database en niet op het FS. Maar dat is een hele andere discussie.
Phenomenon schreef op 15 oktober 2004 @ 09:35:
Nou iis heeft geen htaccess toch?
Klopt, maar wel NTFS-rechten. Daarnaast kan je het bestand ook buiten de webroot gaan zetten. Maar dit is mede afhankelijk of je op Windows of *nix draait.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Noork schreef op 14 oktober 2004 @ 23:21:
[...]
Maak hier eens een BLOB van o.i.d.

van: http://dev.mysql.com/doc/mysql/en/Storage_requirements.html
code:
1
2
3
4
TINYBLOB, TINYTEXT  L+1 bytes, where L < 2^8    
BLOB, TEXT                 L+2 bytes, where L < 2^16    
MEDIUMBLOB, MEDIUMTEXT  L+3 bytes, where L < 2^24   
LONGBLOB, LONGTEXT  L+4 bytes, where L < 2^32

Ah beter een longblob dan.
Hmmmm dit heb ik idd aangepast en dit lijkt wel goed te gaan :)

Zal even verder testen.

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
gorgi_19 schreef op 15 oktober 2004 @ 09:38:
[...]
Klopt, maar wel NTFS-rechten. Daarnaast kan je het bestand ook buiten de webroot gaan zetten. Maar dit is mede afhankelijk of je op Windows of *nix draait.
Jah akkoord, maar als ik het buiten de webroot zet, kan ik het ook niet linken en NTFS rechten kan ik zo maar niet instellen, ik zit gewoon bij een provider hè :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:50

gorgi_19

Kruimeltjes zijn weer op :9

Phenomenon schreef op 15 oktober 2004 @ 09:41:
[...]


Jah akkoord, maar als ik het buiten de webroot zet, kan ik het ook niet linken en NTFS rechten kan ik zo maar niet instellen, ik zit gewoon bij een provider hè :)
Je wilt toch ook niet direct linken? :) Je maakt een image.asp aan, welke het bestand gaat ophalen dmv van FSO. Hij is niet direct linkbaar, maar het image.asp verzorgt dit. Je linkt dus naar image.asp :)

en dat instellen; meestal heb je wel 1 folder met schrijfrechten en de meesten willen wel de rechten wijzigen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
gorgi_19 schreef op 15 oktober 2004 @ 09:44:
[...]

Je wilt toch ook niet direct linken? :) Je maakt een image.asp aan, welke het bestand gaat ophalen dmv van FSO. Hij is niet direct linkbaar, maar het image.asp verzorgt dit. Je linkt dus naar image.asp :)

en dat instellen; meestal heb je wel 1 folder met schrijfrechten en de meesten willen wel de rechten wijzigen :)
Aaah jah dat zou inderdaad wel kunnen. Ik kan via een control panel wel gewoon schrijfrechten etc instellen, dus het zou een optie zijn. Maar ik vind de afbeelding in de database ook wel voordelen hebben eigenlijk en laat dat nu net werken, dus ik blijf daar maar even bij ;)
Pagina: 1