0

サーバーデータベースからダウンロードしたファイルを整理し、クライアントマシンで開くにはどうすればよいですか?

私のコードは、ページがサーバーで開かれている場合にのみ機能します。

        OracleCommand oracleCom = new OracleCommand();
        oracleCom.Connection = oraConnect;
        oracleCom.CommandText = "Select m_content, f_extension From " + Session["tableNameIns"] +
                                            " where i_id = " + rowData;
        OracleDataAdapter adapter = new OracleDataAdapter();
        DataTable tableD = new DataTable();
        tableD.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.SelectCommand = oracleCom;
        adapter.Fill(tableD);

        string FileName = Path.GetTempPath();
        FileName += "tempfile" + tableD.Rows[0][1];

        byte[] file = new byte[0];
        file = (byte[])tableD.Rows[0][0];
        FileStream fs = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
        fs.Write(file, 0, file.GetUpperBound(0) + 1);
        fs.Close();
        System.Diagnostics.Process.Start(FileName);
4

2 に答える 2

0

ご回答ありがとうございます!私はこのようにしました:

Response.ContentType = "APPLICATION/OCTET-STREAM";
Response.AddHeader("Content-Disposition", @"attachment;filename=\" + initFileName);
Response.BinaryWrite(file);

ここで、file-バイナリタイプのパラメータです。initFileName-文字列タイプのファイル名。3行のみ)。

于 2012-11-07T09:42:00.373 に答える
0

これは、Webアプリケーションでは不可能です。
これを実行したい場合は、Windowsアプリケーションを作成してください。

ブラウザのセキュリティ制限により、ブラウザからexeをダウンロードして直接実行することはできません。
ユーザーが手動で保存して実行する応答でexeを送信できます。

現在の設定では、要求の送信元に関係なく、exeは引き続きサーバー上で書き込まれ、実行されています。

WriteAllBytesちなみに、バイト配列をファイルに書き込むために使用する方がはるかに簡単です。ロックやオブジェクトの配置について心配する必要はありません。

File.WriteAllBytes(FileName, file);
于 2012-11-07T04:18:14.693 に答える