2011-12-05 18 views
1

私のURLについて少し質問があります。相対的な直接のURL

私はこのgetcurrentdirectoryを使用する理由は私のASPページでツリービューを使用します。

//DirectoryInfo di = new DirectoryInfo("~" + GetTheCurrentDirectory 
(selectedNodeValue)); 
~ = C://Inetpub//WwwRoot// 
GetTheCurrentDirectory = Projects//Folder1// 

だから私は、フォルダのすべてのファイルを読み込むことができますので、しばらくの間、それは大丈夫です。

ファイルをクリックした後にダウンロードしようとしました。

protected void Page_Load(object sender, EventArgs e) 
{ 
    string path = Request["path"].ToString(); 
    string filename = Request["file"].ToString(); 

    fileDownload(filename, Server.MapPath("~\\" + path + filename)); 
} 

したがって、現在のディレクトリであるパスを取得できます。他のページで使っている方法。

server.MapPatchにも〜を付ける必要がありますか?私はそれがlocalyの作品ですが、私はこれを私のサーバに置くとダウンロード部分がうまくいかないので、これはURLの問題だと思うので、私はデバッグできませんので、本当にこれについて迷っています!

私はいくつかのものに変更:

DirectoryInfoジ=新しいDirectoryInfo(GetTheCurrentDirectory(selectedNodeValueを));

したがって、同じことが返されます。

だから今Server.MapPathの中のパス等しい何かフォルダ//プロジェクトのように1 //

それはローカルに動作しますが、まだいないサーバー上の...

+1

この実装は非常に安全ではないため、変更を検討する必要があります。空の文字列に 'path'を設定し、* web.configに' file'を設定すると、サイトの設定をダウンロードできます。これには、支払いプロバイダのAPIキーやデータベースの資格情報などの機密情報が含まれている可能性があります。 – Arjen

+0

私は問題がURLではないと思う...私はweb.configまたはWebサイトからダウンロードを有効にする何かを追加する必要がありますか?ローカルで動作するので、サーバー側にあるときに何か追加する必要がありますか? – Kiwimoisi

答えて

1

これを試してみてください:

fileDownload(filename, Server.MapPath("~/" + path + filename)); 

さらに、+を使用して文字列を連結しないでください。あなたは次のように私は上記の行を記述し、String.Formatのを使用する必要があります。

fileDownload(filename, Server.MapPath(string.format("~/{0}{1}", path, filename))); 

ちょうどあなたがより良いあなたの問題を理解するために、Server.MapPathのは、に対応し、サーバ上のあなたの物理ファイルパスを返します。 Webサーバー上の仮想パス。つまり、「http://website.com/img.jpg」を「C:\ mywebsite \ img.jpg」に変換します。

更新: ファイルを保存しようとしているフォルダが、読み取り専用ではなく、フォルダにファイルを作成する権限があります。

+0

私は問題がURLではないと思う...私はweb.configまたはWebサイトからダウンロードを有効にする何かを追加する必要がありますか?ローカルで動作するので、サーバー側にあるときに何か追加する必要がありますか? – Kiwimoisi

+0

ファイルを保存しようとしているフォルダが読み取り専用ではなく、フォルダにファイルを作成する権限があることを確認してください。 – Mark

関連する問題