1

私がしていることは、動的テーブルがあり、すべて正常に機能する行を作成することです。セルの 1 つで、クリックするとファイルが開くリ​​ンクを作成しようとしています。しかし、リンクをクリックすると、ファイルにサーバーが見つからないというエラーが表示されます。次に、ファイルを確認するためにアドレス バーに場所を入力すると、ファイルが見つかりますが、アドレスが (file:///c:/inetpub/wwwroot/test1.txt) に変更されます。だから私がしたことは、そのアドレスをアンカータグに入れることでしたが、それでもうまくいきません。これが私がこれまでに持っているものです。どんな助けでも大歓迎です。

tblrow = New TableHeaderRow
tblcell = New TableHeaderCell
tblcell.Text = "<a href='C://inetpub/wwwroot/test1.txt' target='_blank'>" & Test &   "</a>"
 tblrow.Cells.Add(tblcell)
 tableName.Rows.Add(tblrow)
4

3 に答える 3

5

物理パスではなく、URLを使用してください。

変化する

<a href='C://inetpub/wwwroot/test1.txt' target='_blank'>

絶対URLの場所

<a href='http://DOMAIN/test1.txt' target='_blank'>

または、ファイルがサイトにある場合は相対URLの場所

<a href='RELATIVE_PATH/test1.txt' target='_blank'>
于 2012-06-21T12:29:31.507 に答える
0
  1. セキュリティ上の理由から、ほとんどの OS はファイルの直接呼び出しをサポートしていません。一時的な場所を使用するか、サーバーからファイルをロードする必要があります。

  2. ファイルは仮想ディレクトリにあり、他の投稿で言及されているように完全な URL が必要です。

于 2012-06-21T12:33:42.380 に答える
0

ファイルをダウンロードするには、非同期ハンドラー (ASP.NET) の使用を検討する必要があります。最終的に、アンカーはブラウザで別のリクエストを起動し、そのリクエストはファイルをユーザーにダウンロードします。

これは、MSDN からの情報を含む記事です。

以下は、ハンドラーに記述する内容のコード サンプルです。

public void ProcessRequest(HttpContext context) {
    // read input etx
    context.Response.Buffer = false;
    context.Response.ContentType = "text/plain";
    string path = @"c:\somefile.txt";
    FileInfo file = new FileInfo(path);
    int len = (int)file.Length, bytes;
    context.Response.AppendHeader("content-length", len.ToString());
    byte[] buffer = new byte[1024];
    Stream outStream = context.Response.OutputStream;
    using(Stream stream = File.OpenRead(path)) {
        while (len > 0 && (bytes =
            stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                outStream.Write(buffer, 0, bytes);
                len -= bytes;
            }
    }
}

お役に立てれば

于 2012-06-21T12:36:35.500 に答える