Tja! Du borde kunna göra såhär istället: Ja det låter som en god ide =) att man inte tänkte på den. Spara som: Skulle man kunna bygga in säkerhet genom att streama bilderna istället? säg att man sätter säkerhet på katalogerna så man inte kommer åt dem(alltså dem det finns foto i) sen streamar man fotona till användaren istället, och då kan man samtidigt se om man har behörighet? > Skulle man kunna bygga in säkerhet genom att streama bilderna istället? säg att man sätter säkerhet på katalogerna så man inte kommer åt dem(alltså dem det finns foto i) sen streamar man fotona till användaren istället, och då kan man samtidigt se om man har behörighet? Aha! jag har funderat mer på streamingen, jag har letate efter information om detta tidigare men lagt ner det då det inte ganns någon direkt information att tillgå. Jag vet att man kan associera IIS med jpg bilderna på något vis och då skicka dem genom asp.net istället men det såg ut att vara mer jobb än nytt, särskilt med tanke på att jag inte har direkt kontroll över IISen(webhotell) E det så att jag måset kanske skapa en usercontrol för varje bild8objekt i repeater datasourcen) som då placeras ut på rätt ställen i html sidan? och då i denna ha något i stil med? Okay? jag vill ju visa andra grejer på sidan merän bara de streamade bilderna, eller du menar att jag ska lägga en frame och sen ha sidan som lägger ut bilderna i denna? verkar faktiskt inte alls fullt så intressant. Nu måste du tänka lite begränsningar i http/html. Okay, jag e inte så insatt i https begränsningar.Server.MapPath problem
Jag har byggt en foto site som tillåter "oändligt" med nivår på filstrukturen där folk sparar sina bilder.
Jag använder Server.MapPath för att få reda på den fysiska sökvägen(som behövs för filhanteringen)
Problem:
Tydligen så får den virtuella sökvägen som man matar in i Server.mapPath inte vara hur lång som hällst?
Kan man komma runt detta?
Jag får alltså ett fel på att sökvägen är för lång för att den ska kunna konvertera om den till en fysisk adr, detta uppstår dock bara när jag har lite längre/djupare sökvägare.
Kod:
Server.MapPath("/folder1Name/folder2Name/folder3Name/folder4Name/folder5Name/");
Möjlig lösning:
Det jag tänkte på var om man kunde dela upp sökvägen och konvertera mindre delar, men i detta fallet är inte det möjligt vad jag vet?Sv: Server.MapPath problem
Server.MapPath("/") + "folder1Name\folder2Name\folder3Name\folder4Name\folder5Name\";
/JohanSv:Server.MapPath problem
hur känns annars lösningen på att varje användare får sin katalog på servern och i denna skapas deras album, vidare så har alla album en small, medium och larg katalog för de olika storlekarna.
Det känns kanske struligare programerings mässigt att åstakomma men det är bra mycket lättare att navigera manuelt om något fel skulle inträffa och dessutom så ligger det inte väldigt många bilder i en och samma katalog.Sv: Server.MapPath problem
pic0.png
pic1.jpg
pic2.gif
etc.
istället, sedan visar du genom att streama eller liknande istället, eller vad du nu vill hitta på.Sv:Server.MapPath problem
Vad menar du med
pic0.png
pic1.jpg
pic2.gif
etc.
Jag kör endast med jpg ju?Sv: Server.MapPath problem
Inga problem att streama via asp.net, du får själv se till att skapa den logik som behövs för att kontrollera om mna får ladda ner filen, och sedan se till att den streamas ner. Om du är ute efter prestanda så finns det en klass som heter DefaultHttpHandler som "skickar tillbaka" förfrågningar till iis, men du får fortfarande möjlighet att i asp.net kontrollera behörigheten. Kolla google.
> pic0.png
> pic1.jpg
> pic2.gif
> etc.
Jag menar att du inte ska hålla på och sortera en massa, möjligtvis att du skapar kataloger efter tusentals bilder eller liknande (0-999 i en mapp, 1000 - 1999 i nästa, osv.) och sedan bara döper bilderna till ett löpande id-nummer (samma id som bilden har i databasen.) På så sätt slipper du en massa begränsningar i filsystemet, och du får en del andra trevliga fördelar när du ska hantera det ifrån kod.Sv:Server.MapPath problem
Idag så fungerar det så här:
1. Användare går in på sidan
2. Codebehinden i ASP.NET sidan kollar upp albumnet och plockar fram ett dataset med all info om bilden
3. en repeater onbound metod lägger ut all infor om bilden och skriver också ut sökvägen till en img tag.
Man kan alltså ange en sökväg till bilden direkt i browsern och man kommer kunna se den.
Det jag vill är att låsa katalogerna så att man inte kan titta i genom denom browsern, sen vill jag då starta en streamer i codebehind till bilden och då koppla denna till img tagen på siten.
Frågan är då hur jag kopplar en streamer till en img tag? eller hur jag överhuvudtaget får ut bilden på siten? trotts att katalogen den liger i inte går att komma åt utifrån.Sv: Server.MapPath problem
Sub ShowImage(ByVal bmp As Bitmap)
' Clear current content and set returned content type
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ContentType = "image/jpeg"
' Save to the Response.OutputStream object
bmp.Save(HttpContext.Current.Response.OutputStream, _
Imaging.ImageFormat.Jpeg)
bmp.Dispose()
HttpContext.Current.Response.End()
End Sub
Då skulle man kunna titta på om användaren har tillträde antingen innan repeatern ritar ut eller i varje bild(vilket verkar vara en sämmre ide)Sv: Server.MapPath problem
Om jag skulle bygga en usercontrol som sreamar ut en bild till HTTP, vad händer då ? jag menar när en repeater bygger upp sitt utsende så bygger den ju allt efter hand(objekt/rad var för sig) så om man kan streama ut en bild just på det ställe där den just nu håller på att generera en sida så tycker man att det borde fungera?Sv:Server.MapPath problem
1) Hur gör du när du bäddar in en bild i en sida?
2) När du bäddar in bilden, anger du en sökväg då?
3) Då du anger en sökväg, är det samma sökväg som till html-sidan?
4) Nej, du måste ha en separat sida som streamar ned bilderna.Sv: Server.MapPath problem
Det man skulle kunna göra är något i stil med detta:
<img src="photo.aspx?photoId=551" height="100" width="100"/>
Problemet är att dett kommer tvinga photo.aspx att behöva hämnta information från databasen som igentligen redan är hämntad en gång, dessutom krävs det en connection till MySQL databas för varje bild vilket inte är acceptabelt.
Kanske skulle man kunna lägga informationen i en session och sen hämnta ut den i photo.aspx men problemet är väll att photo.aspx kommer köras efter repeatern är färdig så då kan man inte lagra info om en bild i en session utan man måste lagra det i flera(om man inte lagrar någon form av generic list?
Det som behövs till photo.aspx är en sökväg till bilden det är igentligen allt. Finns det någon smart lösning för detta?