いつもお世話になります。
ファイルアップロードファイルを下記のように作成しました。
その後の処理でファイル名を記録しようと思ったのですが、
下記のように記述するとファイル名がフルパスになってしまいます。
(ファイル名:.$inLINK.)
ファイル名をカットする方法(例:c:\temp\test.txt->test.txt)にするにはどうしたらよいのでしょうか?
ファイル拡張子はtxtだけではなく、doc、xls、pdfなど多岐にわたります。
どなたかご教示お願いいたします。
※できればこの記録したファイルを読込んでリンク表示する方法も教えて下さい。
-----------ファイル記録処理------------------------------------
print DATA $lTMPTabl[0]."<>".$inTITLE."<>".$inMAIN."<>".$inDATE."<>".$inSEL."<>".$inLINK."<>".$inFLAG."<>".$inCATE."\n";
--------------------------------------------------------
---------ファイルアップロード--------------------------------
$BUFSZ = 2048;
$file = '';
$buffer = '';
if ($inLINK ne '')
{
while ($bytesread = read($inLINK, $buffer, $BUFSZ))
{
$file .= $buffer;
}
open(OUT, "> ../upload/$inLINK");
binmode(OUT);
print(OUT $file);
close(OUT);
}
------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
>長いファイル名でも対応可能でしょうか?
できます。わざとそういうふうに作りましたので。
>こちらで表示ができておりません。
ブラウザ上ではHTMLはどのように見えていますか?
正しいパスを指し示しているか、またはその位置にファイルがちゃんと存在しているかを調査してみてください。
また、もしパスが正しいのであれば、.htaccess などを書き換えてMIMEを調整するか、もしくはダウンロード専用のCGIが別に必要かもしれません。(自信なし)
この回答への補足
deagle様度々ありがとうございます。
再度確認いたします。
$inLink =~ s/^.*[\\\/]//;は下記プログラムの
open(OUT, "> ../upload/$inLINK");直前でよろしいのでしょうか?
何度も申し訳ありませんが、挿入位置を教えて下さい。
-------------------------------------------------------------
$BUFSZ = 2048;
#$file = '';
#$buffer = '';
#if ($inLINK ne '')
#{
#while ($bytesread = read($inLINK, $buffer, $BUFSZ))
#{
#$file .= $buffer;
#}
#
#open(OUT, "> ../upload/$inLINK");
#binmode(OUT);
#print(OUT $file);
#close(OUT);
No.4
- 回答日時:
>このアップロードの部分は抜粋です。
了解しました。
あと、read() 関数の第1引数は、ファイル名ではなくファイルハンドルを記載します。(先の回答にこの件を書き忘れました)
この回答への補足
deagle様本当に本当にありがとうございます。
大変参考になりました。現在リンク解明に全力投球中です。
一応リンクに関して不明点がありますので、この質問のクローズしませんがご了承下さい。
deagle様おはようございます。昨日は色々ありがとうございました。$inLink =~ s/^.*[\\\/]//;をif ($inLINK ne '')の直前に付加しましたが、ファイル名がc:\temp\test\cgi\test.cgiのようにロングネームになったままになってしまいます。WINDOWSクライアントからlinuxサーバーにアップロードする為、ロングネームのままだとファイルがリンクが張れません。ご面倒ですが、ファイル名をtest.cgiにする方法を教えて下さい。ご面倒をお掛けして申し訳ありません。
No.3
- 回答日時:
>挿入位置を教えて下さい。
"# if ($inLINK ne '')" この行の直前が無難でしょう。
それと、if 文内の read() 関数の使い方がなんか適当っぽいんですが、これはわざとですか?
もしわざとでなければ、前とあとに別途 open 文と close 文を追加する必要があるかと思います。(サーバー上にすでにファイルがあるんであれば)
この回答への補足
deagle様本当にありがとうございます。
open 文と close の件ですが、このアップロードの部分は抜粋です。
そのほかのファイルに関してはopenとcloseをしております。
※検討違いであればご指摘をお願いします。
先ほどのリンクの件ですが、ソース表示でみた所リンクが張られていないようでした。見直してみます。何かヒントなどありましたらお願いします。頼ってばかりで申し訳ありません。
No.1
- 回答日時:
$inLink を使う直前に下記の1文を追加します。
$inLink =~ s/^.*[\\\/]//;
ちなみに画面上に表示する方法は、通常 <A> タグで表示するだけだと思うのですが、何が問題になっているのですか?
この回答への補足
deagle様ご回答ありがとうございます。
$inLink =~ s/^.*[\\\/]//;についてですが、C:\TEMP\TEST.TXTだけでなくc:\デスクトップ¥test\temp\doc\test.txt等という長いファイル名でも対応可能でしょうか?
ご面倒ですがご解説をお願いいたします。
またファイルのリンクについては別プログラムで下記(抜粋)のような記述をしております。こちらで表示ができておりません。
何か方法はあるのでしょうか?
大変恐縮ですが、本日中に作成の仕事で困っております。
何卒よろしくお願いいたします。
-------------------------------------------------
$tPutIconA= "<a href=\"../upload/$sNewsData[5]\"><img src=\"../img/btn_html.gif\" alt=\"\" width=\"27\" height=\"37\" border=\"0\"></a>";
$tPutIconB= "<a href=\"../upload/$sNewsData[5]\">$sNewsData[1]</a>";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
flockについて
-
file_exists関数について
-
perlをwindows環境でshift-jis...
-
Perl UTF8で出力
-
VB6.0でDB接続する際に切断時の...
-
MATLABでのwhile文の条件について
-
ExcelをCSV書き出す場合のシー...
-
C言語で特定の行を抽出する方法...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
close()で例外が投げられる理由
-
文字列をカウントするにはどう...
-
requireで同じライブラリを複数...
-
batファイルでrenameができませ...
-
JavaでCSVファイルを高速に読む...
-
[Perl]Shift-JISのXMLを解析する場
-
Perl 指定行への書き込み
-
VBAでタブ区切りテキストの保存...
-
Windowsで複数のファイルを同じ...
-
テキストファイルの各行を配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fopenでディレクトリ内の全ファ...
-
1行がやたら長いテキストをバッ...
-
VBでファイル分割の方法
-
ファイルロックの解除方法
-
ファイルの足し算(pascal)
-
ファイル名の切捨てとリンクの...
-
ファイルディスクリプタとは?
-
ログファイルの新規作成方法に...
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
close()で例外が投げられる理由
-
エクセルVBA コードが同じでも...
-
batファイルでrenameができませ...
-
window.open でのファイル指定方法
-
Windowsで複数のファイルを同じ...
-
ReadLineでの読み出し行を指定する
-
vba dir の相対パス
おすすめ情報