- PR -

サーバー上のファイルをリネームしてダウンロードする

1
投稿者投稿内容
けんじ
会議室デビュー日: 2006/01/13
投稿数: 7
投稿日時: 2009-03-08 03:07
お世話になります。

現在IIS6.0 & ASP & SQLにてのシステムで開発を行っております。
サーバー上のファイルをリネームしてダウンロードする必要がありました。

現在、アップロードの際ファイル名が同等であっても上書きが発生しないように

レコードID_ファイル名

の形式でアップロードされています。

しかし、ダウンロードを行う際この形式(レコードID_ファイル名)ではなく
レコードIDを省いたアップロードした際のファイル名でダウンロードを行いたく
質問させて頂きました。

尚、ファイル名はデータベースに保存されています。

ダウンロードの際、一枚ページを挿入(リネームを行うVB)し
ファイル名を置換(レコードID_)を省いた形式でダウンロードするような
形式で考えていますが、勉強不足のため質問させて頂きました。

今考えている手法としては、一度
Server.CreateObject の CopyFile にてTEMPフォルダに一度コピーし
そのコピーされたファイルを Server.CreateObject の Name プロパティにて
DBに集録されているファイル名を呼び出しリネームし、ダウンロード(Response.Redirectして)する
様なフローを考えていましたが、もっと簡潔に済む方法が考えつきませんでした。

大変申し訳ございませんが、アドバイスを頂ければ幸いです。
どうぞ宜しくお願いします。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-03-08 08:40
ファイルを全部よみこんで、Response.Write してくださ

Content-Disposition: attachment; filename=元のファイル名

ヘッダをつければ、ダウンロードダイアログが出てきます。


##日曜日なのに、目覚ましに過剰反応。。。玄関で家族に「今日は日曜日。。。」
##と止められました。かなりテンパってます;;

けんじ
会議室デビュー日: 2006/01/13
投稿数: 7
投稿日時: 2009-03-08 14:31
ぴあちゃん様

日曜日の早朝にも関わらずアドバイスを頂きありがとうございます(笑)

早速実験を行っているのですが

>Content-Disposition: attachment; filename=元のファイル名
>ヘッダをつければ、ダウンロードダイアログが出てきます。

上記の通りにてファイル名は変更できたのですが、

>ファイルを全部よみこんで、Response.Write

ファイルの読み込みフローで、手法が思い当たりませんでした。
申し訳ございませんが、このあたりをアドバイス頂ければ幸いです。

どうぞ宜しくお願いします。


id = Request.QueryString("id")

sql = "SELECT * from [ファイルマスタ]"
sql = sql & " WHERE [file_id] = " & id
Call rs.Open(sql, db)

Response.AddHeader "Content-Disposition","attachment;filename=" & rs("file_name")
'Response.ContentType = "application/octet-stream;"
Response.Write "問題の箇所"

rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-03-08 23:05
http://www.red.oit-net.jp/tatsuya/vb/Open.htm
1

スキルアップ/キャリアアップ(JOB@IT)