Avatar billede mochr Nybegynder
27. maj 2008 - 21:58 Der er 7 kommentarer og
1 løsning

Billeder på flere harddiske

Jeg har en web app der får rigtig mange billeder. Derfor har jeg os flere harddiske i serveren til det.
Men hvordan tilgår man nemmest de filer der lægger uden for web appens scope?

Lige nu lægger har jeg stier i db'en der ser sådan ud: Image/folder1/bla.jpg. Der er os et flet i db'en jeg har kaldt path. Altså c:\inetpub\wwwroot\webnoget\.

Jeg skal på en heller anden måde have knyttet dem sammen, så jeg senere hen kan lave path stien og til fx. d:\files\bla
Avatar billede arne_v Ekspert
28. maj 2008 - 03:26 #1
Hvis man kunne downloade direkte fra hvor som helst på diskene, så ville det da være et
gigantisk sikkerheds hul.

Du har 2 muligheder:

1) Konfigurere IIS til at serve de dirs du ønsker. Jeg ved ikke hvordan man gør i IIS - det
  er nemt i Apache, så monstro ikke det kan lade sig gøre i IIS også.

2) Lad et script læse filerne og sende dem ud.
Avatar billede arne_v Ekspert
28. maj 2008 - 03:26 #2
Ja - og hvis du havde selve billederne i database, så ville du ikke have problemet.
Avatar billede mochr Nybegynder
28. maj 2008 - 09:54 #3
Ja det med sikkerheden er jeg klar over. Derfor jeg spurgte :)

Jeg må kigge på det med opsætningen i IISen.

Hvordan kunne man lave scriptet? Noget med en webservice der henter billederne?

Jeg vil helst undgå at smide dem i en database, da der nok kommer billeder i 10000 klassen.
Avatar billede arne_v Ekspert
28. maj 2008 - 14:52 #4
Ikke web service. Simpel side.

Eksempel:

<%@ import namespace="System.IO" %>
<script language="C#" runat="server">
private const string BASEDIR = @"C:\InetPub\wwwroot\pictest\";
void Page_Load(Object sender, EventArgs e)
{
    string fnm = Request["fnm"];
    Stream stm = new FileStream(BASEDIR + fnm, FileMode.Open);
    byte[] b = new byte[(int)stm.Length];
    stm.Read(b, 0, b.Length);
    stm.Close();
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fnm + "\"");
    Response.BinaryWrite(b);
}
</script>
Avatar billede mochr Nybegynder
28. maj 2008 - 15:10 #5
Tak for eksempel.

Tror jeg glemte en lille detajle :)
Jeg skal have det ud i XML da det skal læses i flash. Så det bliver noget ala:
<node type="img" path="sti/til/billede.jpg">

Skal jeg bare loade det hele igennem den side, men en parameter på fx billede id.
Altså så path bliver getimg.aspx?id=blabla&path=c:\noget

Og vil load tiden blive større?
Avatar billede arne_v Ekspert
29. maj 2008 - 02:52 #6
Ja.

Ja - det koster en lille smule ekstra. Men til gengæld har du så også bedre
muligheder for at styre tingene. Security. Begrænse download hastighed. Etc..
Avatar billede mochr Nybegynder
29. maj 2008 - 09:05 #7
Tak for hjælpen. Smid et svar
Avatar billede arne_v Ekspert
29. maj 2008 - 15:42 #8
svar
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