---
title: "Ni får inte ladda ner filerna!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/67930-ni-får-inte-ladda-ner-filerna"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "cyprys"
published: "2003-02-11T11:13:01.000Z"
updated: "2003-02-17T15:05:54.000Z"
replies: 17
views: 624
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/67930-ni-får-inte-ladda-ner-filerna"
---

# Ni får inte ladda ner filerna!

## #1 — cyprys, 2003-02-11T11:13Z

Jag tar upp ett problem jag ännu inte lyckats lösa.

Håller på och gör en webbplats där man ska kunna ladda ner filer som ligger i en och samma mapp.
Antalet filer kommer att ändras hela tiden då vissa användare får ladda upp filer.

Problem 1.
Då filerna ofta är i format som pdf och doc så har jag kommit fram till att visa direkta sökvägar till filerna är det bästa (Där användaren väljer "spara som"), för att de inte ska öppnas i webbläsaren.
Samtidigt vill jag uppdatera hur många nedladdningar varje fil fått. Detta genom att antagligen visa den direkta sökvägen till filerna genom ett annat litet fönster för enkelhetens skull.
Men finns det nått sätt att automatiskt påbörja en en spara som-ruta på en doc-fil?

Problem2.
I vilket fall som jag väljer för p1 så vill jag skydda mappen där filerna ligger i med form-authentcation.
Problemet är att jag inte lyckas att säkra mappen de ligger i.
Har lagt en web.config i själva mappen där jag stänger ute alla användare "what-so-ever" just nu, men man kommer ändå åt den.

```
<authorization>
        <deny users="*" />
</authorization>
```

Någon som har en kodsnutt eller inställning som vi vet fungerar så man kan jämföra?
Har gått efter både boken och MDSN på den här grejen tycker jag.

Permalänk: https://www.webforum.nu/p/67930

## #2 — Kalli, 2003-02-11T12:04Z

Jag har en mapp som är skyddad i min applikation och min web.config ser ut ungefär såhär:

```
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<system.web>

<authentication mode="Forms">
       <forms name="Blabla" loginUrl="login.aspx"></forms>
</authentication>
  
<authorization>
        <allow users="*" /> 
</authorization> 

</system.web>
    
<location path="vip_directory">
	<system.web>
		<authorization>
			<deny users="?" /> 
		</authorization>
	</system.web>
</location>

</configuration>
```

 

Det jag här kallar för vip_directory är alltså den skyddade mappen.

/Kalli

Permalänk: https://www.webforum.nu/p/945649

## #3 — Grynet, 2003-02-11T12:14Z

problem 2

asp.net skyddar enbart de filer som den anser är dess egna. dvs .aspx, ascx, html etc... till dessa hör alltså inte alla andra filer som doc osv. För att dess ska kollas av aså.net måste man lägga till dem i iis:en som nånging kommer inte ihåg exakt hur, men det är spelar ingen roll eftersom det inte är en bra lösning.

Det är inte en bra lösning därför att då tolkas det av asp.net som en sida som den ska ta hand om. Om du tex försöker skriva ut något i global.asax händelsen begin.request så kommer detta att balla ur documentet. Finns säkert fler saker som ballar det..men det räcker väl med ett exempel för att överbevisa alla  :p 

Nåja vad då göra..

Förslag ett lägg filerna i en databas och gör logik som skyddar dem.

Förslag två lägg filererna på en ej web-utdelad katalog och gör logik som streamar ut dem till användaren.

Förlag tre gör windows inloggning och låt NTFS styra alla rättigheter. (tyvärr har jag inte lyckats hitta nått sätt att sätta rättigheterna på filerna via koden)

Förslag fyra, skit i min åsikt att det är dåligt att mappa filerna till asp.net.

problem 1

Om du löser ett eller två över så har du löst detta problem osså.

Kanske inte några konkreta kod exempel, men en liten vägledning ivarje fall.  :bire

Permalänk: https://www.webforum.nu/p/948601

## #4 — cyprys, 2003-02-11T13:19Z

> asp.net skyddar enbart de filer som den anser är dess egna. dvs .aspx, ascx, html etc... till dessa hör alltså inte alla andra filer som doc osv. För att dess ska kollas av aså.net måste man lägga till dem i iis:en som nånging kommer inte ihåg exakt hur, men det är spelar ingen roll eftersom det inte är en bra lösning.

 Okidoki! Jag testade att lägga in en aspx-fil i den mappen och mina tidigare koder funkade bra där. Dock så stämmer det du säger här ovan och den här lösningen kommer inte att göra det jag ville. 
Det enda jag egentligen vill är att filerna inte skall kunna nås genom en vanlig URL samt att de skall laddas ner och inte öppnas i en webbläsare.

Om vi spanar vidare på ditt förslag nr 2 och sparar filerna i en mapp över wwwrooten.
Hur skulle en sådan logik se ut för att användaren ska kunna ta del av filerna?

Permalänk: https://www.webforum.nu/p/948660

## #5 — Grynet, 2003-02-12T10:33Z

Lite snabbt och oprövad kod hur streaming funkar.

Response.CharSet("");
Response.ContentType="Text/html";
Response.Write(myStream);
Response.End();

exempel på hur en bild kan skrivas ut

Response.ContentType="image/jpg";
image.Save(Response.OutputStream, ImageFormat.Jpeg);

Ungefär nått i den stilen. Alltså inte så speciellt konstigt.

ps :o 
hmm, slog mig just nu att anledningen som jag hade för att inte sätta content typen i IIS påverkar även streamingen som jag har här..men det kanske är lättare att kring gå om man använder streaming. Det går ju att flusha responset innan man påbörjar streamingen etc. :p

Permalänk: https://www.webforum.nu/p/949240

## #6 — cyprys, 2003-02-12T10:44Z

Hmm. Och detta får användaren att få upp en ruta som man väljer "spara som" med?

Permalänk: https://www.webforum.nu/p/949246

## #7 — Grynet, 2003-02-12T11:40Z

Det beror ju på vad användaren har ställt in i sin browser om de får upp spara rutan eller direkt i browsen, men det visste du säkert.

Om jag inte är ute och cyklar ska föjande kod funka. Den tvingar filen att bli öppnas som attachment istället för i browsern. 

Page.Response.AddHeader("content-disposition","attachment; filename="name.doc");

Permalänk: https://www.webforum.nu/p/949306

## #8 — cyprys, 2003-02-12T11:43Z

> Det beror ju på vad användaren har ställt in i sin browser om de får upp spara rutan eller direkt i browsen, men det visste du säkert.

Det finns speciella koder som funkar i IE som går runt användarens inställningar där man kan få upp en "spara som"-ruta på vad som helst.
Det ska tydligen även gå genom ASP men jag vet inte hur bara.

Men jag testar ovanstående snutt och försöker fördjupa mig lite i ämnet. 
Man tackar :)

r1: Jag redigerar lite jag me då ;) 
Jag har testat koden du skrev ovan samt läst en del om det men lyckas inte riktigt ändå.. 

r2: Jag lyckas få den kodsnutten att få upp en spara som-ruta för filer som ligger i samma mapp. Kan inte gå utanför mappen tydligen?
Detta gör ju att problemet med att skydda filerna kvarstår.
Visserligen Skulle man kanske kunna lägga ascx-filen som detta körs från i mappen med filerna och sätta authorization på den, samt därefter skapa ett mappnamn som är långt och hemligt. 
Inget jag tror jag vill satsa på iofs men hur men har ni några snilleblixtar?  :)

Permalänk: https://www.webforum.nu/p/949309

## #9 — cyprys, 2003-02-13T12:07Z

Hur ser den där streamingkoden ut för att streama ut en fil som ligger utanför webrooten?

Permalänk: https://www.webforum.nu/p/950089

## #10 — PatrikB, 2003-02-13T12:29Z

Det du kan göra är att sätta endast ScriptSource Access på mappen i IIS Managern (högerklicka på mappen, välj egenskaper, säkerhet på vald mapp). På det viset kan man inte komma runt att ladda ned filerna med direkt url i browsern: <http://www.mrwize.nu/bin/guestbook.mdb> som exempel men du kommer fortfarande åt dem genom kod

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/950105

## #11 — cyprys, 2003-02-14T15:18Z

Yupp. Patrik hade tricket jag behÃ¶vde. Perfa. 
Nu har jga kombinerat authorization-forms , instÃ¤llningar i IIS och attachment. 
Enda problemet nu Ã¤r att det bara funkar i IE. 

```
Page.Response.AddHeader("content-disposition","attachment; filename="name.doc");
```

Denna kod funkar varken i Opera eller Netscape. 
VarfÃ¶r och hur kan man gÃ¥ runt det?

Permalänk: https://www.webforum.nu/p/951094

## #12 — spango, 2003-02-15T01:23Z

> **cyprys skrev:**
>
> VarfÃ¶r och hur kan man gÃ¥ runt det?

Vad jag minns funkar det visst i Netscape (\>4) men jag kan ha fel... <http://www.webforum.nu/showthread.php?s=&postid=490189#post490189> :q

Permalänk: https://www.webforum.nu/p/951431

## #13 — cyprys, 2003-02-17T10:20Z

Nja. Både ja och nej.

Det funkar alldeles utmärkt allting i IE i vilket fall som helst men när jag kör i Netscape och Opera så vill det inte riktigt.
\[kod\]Response.ContentType = "application/unknown"
Response.AddHeader("content-disposition", "attachment; filename=" & Request.QueryString("file"))\[kod\]
Om jag hoppar över att sätta en contenttype så händer ingenting på sidan.
Om jag däremot skriver dit den så laddar man ner själva sidan.
Alltså filen.ändelse.aspx och allt som står på själv aspx-sidan.
![](http://www.cyprys.com/wf/dwnl_ns.jpg) 
Den verkar inte hitta attachtment-filen.
Det konstiga är dock att det hittar allt den behöver i IE utan problem med exakt samma kod.

Vart ligger skillnaden för att även NS ska ta emot koden?

Permalänk: https://www.webforum.nu/p/952669

## #14 — PatrikB, 2003-02-17T11:43Z

Mozilla som använder "samma" motor som NS tankar hem filen .... men, med fel filändelse. Det beror på att du har contenttype = application/unknown

om du sätter rätt contenttype så funkar det ... på min Mozilla i varje fall :e

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/952714

## #15 — PatrikB, 2003-02-17T12:02Z

sorry, my misstake ... det var visst Phoenix som klarade av det ...... tyvärr inte Mozilla ....

/PatrikB

Permalänk: https://www.webforum.nu/p/952736

## #16 — spango, 2003-02-17T12:03Z

Uhm, Phoenix är väl för tusan också Mozilladriven?

Permalänk: https://www.webforum.nu/p/952737

## #17 — PatrikB, 2003-02-17T15:04Z

det förståss .... den klarade det .... inte Mozillan .... slutsats? :e

/PatrikB

Permalänk: https://www.webforum.nu/p/952840

## #18 — cyprys, 2003-02-17T15:05Z

I vilket fall som helst så funkar det varken i Opera eller Netscape...

Permalänk: https://www.webforum.nu/p/952842

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/67930-ni-får-inte-ladda-ner-filerna
