Avatar billede respen Nybegynder
16. oktober 2000 - 16:11 Der er 15 kommentarer

Hente filer uden for webscopet?

På en site jeg er igang med, styres adgangen via logon. På siten har jeg en del ressourcer(word dokumenter) som kun skal være synlige for nogle bestemte.

Min strategi er at ligge ressourcerne uden for webscopet på ISS\'en og så via en asp fil fange filen efter at jeg har valideret personen.

Er der nogen der har nogle erfaringer med dette, eller har microsoft lavet en komponent der klare dette?

På forhånd tak

René
Avatar billede terran Nybegynder
16. oktober 2000 - 16:16 #1
Du behøves ikke at lægge dine filer \"udenfor\" webserveren. Angiv i brugerprofilen hvilken \"status\" brugeren har og vis så filerne derefter.

Er det noget du kan bruge?
Avatar billede respen Nybegynder
16. oktober 2000 - 16:25 #2
Problemet er at hvis jeg ligger filerne i Scopet på webserveren, så kan man umiddelbart, hvis man kender filnavnet, skrive url\'en i adressefeltet i browseren og ad den vej få adgang til et worddokumentet man måske ikke har rettighed til!

Altså er jeg nødt til at ligge worddokumentet udenfor scopet!

rené
Avatar billede terran Nybegynder
16. oktober 2000 - 16:30 #3
Det er bare en idé:

Har du prøvet at henvise til en sti der ikke ligger på wevseveren. F.eks. webseveren er C:\\Inetpub og dine filer ligger på C:\\myFiles\\
også simpelthen angive stien i dit asp dokument hvor den skal finde .doc dokumenterne.

Jeg har aldrig prøvet det før på IIS4/5, men jeg ved med MS Exchange server kan det lade sig gøre.
Avatar billede geeeet Nybegynder
16. oktober 2000 - 16:37 #4
<%

path = \"c:\\filnavn.txt\"
Set fs = CreateObject(\"Scripting.FileSystemObject\")
Set a = fs.OpenTextFile( path & request(\"fil\"), 1, false)
dim teksten
teksten = a.readall
a.Close

%>

<html>
<head>
    <title>ReadFile Example</title>
</head>

<body>

<%= teksten %>

</body>
</html>

bruger jeg selv, til selvsamme operation...

/Geeeet
Avatar billede ldanielsen Nybegynder
16. oktober 2000 - 16:43 #5
Læg filerne i en mappe, hvor IUSR_<MASHINENAME> ikke har adgang, og lad dine brugere logge ind med profiler svarende til hvad de skal have lov at se.

Men det lader til at du logger folk ind via asp, dvs. at du gemmer deres adgangskoder i en database, korrekt?

I så fald er det rigtigt at du skal placere dem udenfor scopet for at være sikker.

De eneste måder, jeg har erfaring med, til at få fat i sådanne filer er via FileSystemObject, eller via CDONTS, der kan hente dem og vedhæfte dem en email.

Ikke meget hjælp.

Led evt efter en komponent der kan gøre det

Eller vent et par timer, der er garanteret en smart måde.
Avatar billede geeeet Nybegynder
16. oktober 2000 - 16:47 #6
\"der er garanteret en smart måde:\" >> Jeps >> FileSystemObject

/Geeeet
Avatar billede geeeet Nybegynder
16. oktober 2000 - 16:50 #7
Jeg fandt en lille fejl, brug denne istedet:

<%

path = \"c:\\mappenavn\\\"
Set fs = CreateObject(\"Scripting.FileSystemObject\")
Set a = fs.OpenTextFile( path & request(\"fil\"), 1, false)
dim teksten
teksten = a.readall
a.Close

%>

<html>
<head>
    <title>ReadFile Example</title>
</head>

<body>

<%= teksten %>

</body>
</html> <b></b>

så kan du kalde den således:

http://filnavn.asp?fil=geeeet.txt

så bliver filen \"geeeet.txt\" som ligger i \"c:\\mappenavn\" åbnet

/Geeeet
Avatar billede respen Nybegynder
16. oktober 2000 - 17:21 #8
Først til terran:

Hvis jeg skal angive en sti, er den nødt til at være indenfor webscopet ellers kan browseren ikke få fat i filen.

Til geeten:

Jeg har selv overvejet filesystem objektet. Problemet er at det er et word dokument, så det duer ikke at skrive svaret ud fra filesystemobjektet, når det er html response. Jeg har overvejet om det ikke kan gøres ved at sætte contenttype til \"text/doc\" (i må ikke lige hænge mig op på om det er den rigtige contenttype) og så udskrive resultatet uden nogen html tags.

Til ldanielsen:

Ja, det er en database logon jeg bruger og jeg vil være meget træt af (ekstra kodning og generering af NT brugere) at skulle oprette en NT bruger for hver bruger jeg har i DB\'en. Jeg kunne forestille mig at der må være andre der har stået med denne problematik, så der er højst sandsynligt lavet en komponent der løser problemet. Jeg har dog ikke kunne finde noget på MSDN. Har dog ikke kikket andre steder!

René

Avatar billede geeeet Nybegynder
17. oktober 2000 - 10:46 #9
Ja, ok word-dokumenter er den ikke så glad for :-)

ÐÏࡱá skulle være \"Word doc\" :-)

/Geeeet
Avatar billede centauri Nybegynder
17. oktober 2000 - 21:33 #10
En anden mulighed var jo at du havde en side med login hvor kun de bestemte brugere kunne logge ind og så havde du en uoload funktion til at ligge dine dokumenter op så kan du jo ligge dem hvor du vil og samtidig så updaterer din opload funktion en ASP side der indholder links til de dokumenter eller ikke direkte til dokumenterne men sådan at du med en eller anden mail komponent kan sende dokumentet til den E-Mail som brugeren indtaster for der kan du referere til en fil hvor som helt du vil på systemet.

Er det noget der kan bruges ?
Jeg kan sagtens komme med en mere detaljeret forklaring hvis det er nødvendigt
Avatar billede ldanielsen Nybegynder
17. oktober 2000 - 22:40 #11
Ja, den mulighed skitserede jeg også i går.

Jeg har en anden \"nødløsning\" (Heller ikke for elegant), der går på at FileSystemObject, når brugeren ønsker en word-fil, kopierer filen til et dir indenfor webbet, hvorfra den kan downloades/åbnes. Derefter, skal den så slettes igen, fx. på Session_OnEnd, eller efter 5 min eller lign.

Så vil kun et lille udsnit af filerne være tilgængelige, og kun i kort tid. Ikke sikkert, men sikrere.
Avatar billede centauri Nybegynder
18. oktober 2000 - 13:25 #12
ja det er så også en mulighed men hvad mu hvis der ligger for mange eller filerne er for store så den melder time out inden den får kopieret dem,så får du ikke kopieret dine filer.
Avatar billede respen Nybegynder
17. juni 2001 - 13:38 #13
Public Function hent_dokument(ByVal filnavn As String) As Variant   
  Dim binbyte()  As Byte
  Dim filstrr    As Long

  \' Her kan der eventuelt tjekkes for retttigheder til hente dokumentet - det kræver dog bruger parameter
 
filnavn = \"c:\\inetpub\\dokumenter\\\" + filnavn   
  Open filnavn For Binary Access Read As #filnr
  filstrr = FileLen(filnavn)
  ReDim binbyte(filstrr)
  Get #filnr, , binbyte
  Close #filnr
hent_dokument = binbyte
End Function
Avatar billede respen Nybegynder
17. juni 2001 - 13:47 #14
Jeg var lidt hurtig på tasterne og kom til at sende kommentaren.

Jeg har fundet løsningen!!

Løsningen er at lave en dll med den function som er beskrevet i forrige kommentar.

Den ASP side der tager fat i dll\'en ser ud som følger:

\'tjek om brugeren har rettighed til at hente dokumentet
set komponent =server.CreateObject(\"container.klasserettighed\")
  ok=false
  ok = komponent.dokument_rettighed(session\"brugerid\"), Request.QueryString(\"fil)
if ok then

\'hvis ok

    \'find ud af hvad contenttype skal være
    doctype=right(Request.QueryString(\"fil\"), 3)
   
    select case Ucase(trim(doctype))
    case \"DOC\" Response.ContentType=\"application/msword\"               
    case \"XLS\" Response.ContentType=\"application/x-msexcel\"
    case \"PPT\" Response.ContentType=\"application/x-powerpoint\"

   
    end select
   
   
    \'-- hent dokumentet
   
       
        set dllkomp= Server.CreateObject(\"Container.klassehentdok\")
        varstream= dllkomp.hent_dokument(trim(Request.QueryString(\"fil\")))
                Response.BinaryWrite(varstream)       
    Response.end   
\' ellers skriv fejlmeddelelse
else
    Response.ContentType=\"text/html\"
    Response.Write (\"Du har ikke rettighed til dette dokument\")
end if
Avatar billede respen Nybegynder
17. juni 2001 - 13:53 #15
Der er lige et \"aber der die\". Den mappe som indeholder dokumenterne (c:\\inetpub\\dokumenter) skal shares.

Nu kan jeg desværre ikke give mig selv pointene ;-), men det er egentlig Ldanielsen, der har ledt mig på vej til denne løsning, så hvis Ldanielsen vil komme med et svar så er pointene dine.

Jeg vil godt takke for de mange indslag, og undskylde at jeg ikke har henvendt mig før nu.

Hilsen René

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