gregganMedlem sedan jan. 2004678 inlägg Hejsan
Är det någon som har använt aspupload i ASP.NET och kan hjälpa mig att komma igång?
Jag skulle nog helst vilja ladda upp bilderna i en databas, det verkar enkelt och bra.
Det som ska laddas upp är:
Namn som fylls i
Storlek i bytes/kbytes
Filnamn(kanske)
Användaren
OLEDBobject eller vad det nu är där själva filen hamnar.
Någon som kan detta?
tohaMedlem sedan dec. 1999707 inlägg Nja, är aspupload en 3:e-partskomponent? Jag har bara använt .nets HttpRequest.Files (HttpFileCollection). Det är tämligen enkelt, men det kanske inte var det du menade? :l
gregganMedlem sedan jan. 2004678 inlägg nja.. asså, det jag vill göra är att spara bilder som man laddar upp i en databas istället för att spara varje bild. Det verkar som ett bra sätt eftersom man lätt kan köra backup på databasen bara. Och det verkade tämligen enkelt i ASPUpload, dock behöver jag nog bara en liten spark i baken för att komma igång. Alla exempel jag har sett har varit i ASP.. och jag vill gärna se nåt exempel i aspdotnet.
GladhMedlem sedan maj 20012 812 inlägg
Det verkar som ett bra sätt eftersom man lätt kan köra backup på databasen bara
Visst är det det, man får andra fördelar också, men samtidigt får man en riktigt j-vla smäll av prestandaförsämring också. Så om det nu bara är för backupens skull så hade jag nog sett mig om efter en annan lösning.
- M
gregganMedlem sedan jan. 2004678 inlägg nej men jag tycker att det verkar som ett bra sätt också eftersom då ligger ju bilderna skyddade så att deinte kan användas utanför sidan på något sätt. så då har jag två anledningar. är det tillräckligt för att det ska vara värt att balansera ut prestandan?
emissionMedlem sedan dec. 19996 721 inlägg "så att deinte kan användas utanför sidan på något sätt."
..om du läger bildern utanför webbroten så blir de skyddade ändå.
GladhMedlem sedan maj 20012 812 inlägg
...är det tillräckligt för att det ska vara värt att balansera ut prestandan?
Det beror ju på vad du har för bildermaterial, men instinktivt så är svaret NEJ. Den prestanda hit som du får dels från att göra uppslag mot databasen (alltid första punkt att förbättra prestanda, minimera databasanrop) för varje gång du vill ha en bild, samt att du sedan måste streama ut bilden till sidan.
Om det nu är viktigt för dig att ingen kan komma åt filerna så visst gör så, eller gör som emission säger lägg de utanför din wwwroot, du skall dock vara medveten om den prestandaförlust som du åker på.
Nu finns det ju faktikst sätt att minimera denna förlust så mycket som möjligt och det är caching. Använder du caching så får du ungefär samma prestand som om du lägger filerna i ett bibliotek utanför wwwroot, det kommer dock kräva betydligt mer minne (vilket också kommer att påverkar prestanda om du inte har tillräckligt med minne på servern).
All programmering är en avvägning, du kan aldrig få ett perfekt system på alla punkter. Du får ställa: prestanda, aritektur och funktionallitet emotvarandra och bestämma vilket som är viktigast för dig. Om det är viktigt att man inte kan använda bilderna från en annan site, så go ahead, lägg dem i en databas och streama dem ner till klienten, tänk bara på att prestanda blir lidande, men den kanske inte är lika viktigt.
Jag har en kund om vill ha priser insatta i sina bilder på olika produkter. Det är bara att dynamiskt skala och sätta in pris på bilden och sedan stream till sidan. Det är en prestanda hit så det svider om det, lösningen är att cacha alla bilder som genereras och sedan innan jag genererar bilden kontrollera i cachen om de redan finns. Finns det så ut med bilden, om inte så genererar den. Ökar prestandan enormt, men ändå en hit varje gång som en bild inte finns.
- M
gregganMedlem sedan jan. 2004678 inlägg Okej, jag tror jag börjar förstå.
Jag tänkte ha en separat databas där olika användare kan ladda upp bilder. Sedan ska varje användare ha ett fotoalbum där mankan se respektive användares bild. Om jag skulle ha en vänlig filuppladdning så skulle jag ändå behöva köra databaskopplingar eftersom jag på nåt sätt måste hålla reda på vilken bild som tillhör vem samt hålla koll på hur mycket plats varje användare tar. Om jag då kör in allt på samma gång så tänkte jag att det skulle underlätta lite.
Dock känns det som att jag har något smärre problem med databasen ibland. Ibland blir det errorsida.. "Unspecified error..." som hamnar på raden med connection.open()
Vet inte varför det blir så. =/
Men annars är prestandan inget problem som jag ser det.
gregganMedlem sedan jan. 2004678 inlägg problemet jag har är bara det att jag inte vet hur jag ska få aspupload att funka i .net. Jag har läst på aspuploads hemsida att det finns kodexempel i .net, och dom länkar till dom med adressen localhost som om dom fanns på min dator, men eftersom det är mitt webbhotell som har komponenten så får jag inte tag på kodexemplena. Det som vore väldigt trevligt är om antingen någon har dessa exempel eller om någon har tidigare erfarenhet av aspupload med asp.net och kan hjälpa mig att komma igång?
@ndersMedlem sedan juni 200032 969 inlägg gregganMedlem sedan jan. 2004678 inlägg tack @nders, det där borde kunna få in mig på rätt spår. En fråga bara, i zipfilen skickar dom med en dll-fil som man ska lägga in i bin-mappen. Är det själva komponenten eller nåt annat?
GladhMedlem sedan maj 20012 812 inlägg
Men annars är prestandan inget problem som jag ser det.
Det hoppas jag verkligen att du inte har upptäckte än! Prestandproblem upptäcks oftas när det ligger i produktion med en antal samtidiga användare. Om man upptäcker prestandaproblem (som man inte är medveten om) i utveckling så får man riktiga problem i produktion. Det är väldigt sällan som testfasen innehåller prestanda/stress tester och det är lite synd.
- M
@ndersMedlem sedan juni 200032 969 inlägg
greggan skrev:
En fråga bara, i zipfilen skickar dom med en dll-fil som man ska lägga in i bin-mappen. Är det själva komponenten eller nåt annat?
Vad jag förstått är det bara en wrapper för ASPUpload, men jag vet inte säkert. Jag kan nämligen inte ett dyft om något som har med .NET att göra. Än.
(Nästan inget dyft iaf. ;) )
mvh
Gladh skrev:
Men annars är prestandan inget problem som jag ser det.
Det hoppas jag verkligen att du inte har upptäckte än! Prestandproblem upptäcks oftas när det ligger i produktion med en antal samtidiga användare. Om man upptäcker prestandaproblem (som man inte är medveten om) i utveckling så får man riktiga problem i produktion. Det är väldigt sällan som testfasen innehåller prestanda/stress tester och det är lite synd.
- M
Om utvecklingen sker enligt vad som egentligen krävs så skall det framgå i en kravspecifikation hur stor belastning som applikationen skall klara av.
Om detta står i kravspecifikationen så skall om allt går rätt till också detta testas.
gregganMedlem sedan jan. 2004678 inlägg Hmm gladh. Det är ju sant, iofs är applikationen igång nu men det kan ju bli mer folk aktivt senare så det kanske är bra att satsa lite på prestandan ändå.
Dessutom får jag inte ihop det med aspupload. Knepigt det där.
Men det är inte speciellt viktigt det där med att bilderna inte ska kunna synas utanför sidan. Egentligen är det ganska bra om dom kan synas utanför.. :P Backupen är inte heller så farlig, försvinner bilderna så gör dom det.
Däremot har jag några problem om jag nu ska köra vanlig filuppladdning:
1. Hur ser jag till att alla bilder får unika namn även om filnamnet, beskrivningen samt bilden är likadan?
2. Hur kollar jag storleken på filen så att folk inte laddar upp större filer än de har plats för?
Skulle man kunna köra nåt unikt nummer i databasen som sedan används för att döpa bilden och sedan för att hålla koll på vems bilden är så ser man det i databasen?
1.
Skall du spara dom i en mapp så finns det flera sätt.
Man kan göra precis som du säger.
Om bilden har på något sätt en relation till databasen kan tabell id:t sättas till namnet.
Ett annat alternativ är att du går igenom varje filnamn och kontrollerar att det inte redan finns. Finns det en fil med samma namn får du helt enkelt lägga till en parantes efter med en siffra 1 t.ex. Sedan får du anropa samma metod igen finns det filnamnet återigen så får metoden öka siffran till 2 och kalla samma metod igen osv.
2. Om du skall använda komponenten så kan du kolla på den länken som @nders gav dig. Där står hur du kan få ut filstorleken.
5. In C#, use + instead of & to concatenate strings
A VBscript expression such as
txtLine = File.Name & "= " & File.Path & " (" & File.Size &" bytes)\<BR\>"
must be rewritten in C# as follows:
txtLine = objFile.Name + "= " + objFile.Path + " (" + objFile.Size + " bytes)\<BR\>";
http://support.persits.com/show.asp?code=PS020704100
gregganMedlem sedan jan. 2004678 inlägg okej. jo men då kan jag ju köra så med databasen.
nej jag tänkte nog ge upp idén med den där komponenten. det verkar som aldelles för mycket jobb utan någon större nytta.
Finns det något annat sätt att kolla filstorleken?
Om man nu vill ha det unika värdet som typ en md5 sträng eller nåt sånt istället för 1 och uppåt (kan ju se lite trist ut med 1.gif) hur gör jag då?
GladhMedlem sedan maj 20012 812 inlägg
Om man nu vill ha det unika värdet som typ en md5 sträng eller nåt sånt istället för 1 och uppåt (kan ju se lite trist ut med 1.gif) hur gör jag då?
Om du inte vill ha numeriska värden så har du 2 olika sätt att få unikt värde.
GUID eller TIMESTAMP.
TIMESTAMP är lite vanskligt för teoretiskt så skall du kunna få 2 exakt likadana värde (även om sannorlikhet inte är så stor). Så då är GUID bättre eftersom det garanterad skall vara unikt.
- M
gregganMedlem sedan jan. 2004678 inlägg nu har jag sökt som en galning både här på wF och på msdn för att försöka förstå mig på vad guid är. Jag förstår inte riktigt.
Konverterar jag något värde till guid eller hur gör jag för att skapa en guid?
GladhMedlem sedan maj 20012 812 inlägg GUID står för Global Unique IDentifier och är det konstiga stränga som du kanske sett ibland som ser ut så här:
{02196E72-C43C-4648-BD7C-1AB89367936C}
i .NET så finns det en Guid klass som du kan använda dig av. Guid.NewGuid() tror jag kommadot är för att skapa ett nytt GUID.
- Magnus