• 締切済み

Perlで、保存フォルダを指定する方法

元のファイルを処理して新しいファイルとして保存するCGIを組もうと思います。 新しいファイルの保存フォルダの指定で困っています。 <input type="text" name="Filename" size="100"> とやると、新しいファイルを保存するフォルダも全部手入力です。複数の人が使う予定です。使う人によって保存フォルダは違います。そこでフォルダ指定をグラフィカルに出来たら良いなと思いました。 そこで <input type="file" name="Filename" size="100"> とtype属性を変えてみました。なかなか使い勝手が良いなと思ったのですが、"file"はアップロードするファイルを指定する際に使うもので、保存するファイルの指定には使えません。 何か良い方法はないでしょうか。

  • Perl
  • 回答数2
  • ありがとう数0

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>複数の人が使う予定です。使う人によって保存フォルダは違います。  なら、少なくともHTMLに記述するのは避けるべきですね。なぜならソースを見るだけで他人のフォルダーが丸見え。メール送信フォームにアドレスを記述するのと同じです。  いずれにしろ、何らかの方法でユーザーを特定して、サーバー側で内々に指定すべきです。そのためには、認証システムを導入されているはずですが、それによって保存先を決めてしまえば良いです。次善の策として出力されるHTMLを変更するのも良いでしょう。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

・『サーバーにおいてある』元のファイルを処理して『サーバー上の』新しいファイルとして保存するCGI ・新しいファイルを保存する『サーバー上の』フォルダ でよろしいですか? name="Filename" で受け取るのは「『サーバー上の』ディレクトリ/新しいファイルの名前」でよろしいですか? もしそうなら、 ・ディレクトリは、Perlの globやreaddirを使って取得→ selectタグやtype=radioを使って選択させる ・type="text" name="Filename"ではファイル名だけ入力させる。(/は不正な文字として置き換えたり拒否したりする) という方法があります。

関連するQ&A

  • HTMLで保存先を指定する方法について

    同じような質問がないか調べたのですが、 見当たらなかったので質問させてください。 特定のファイルを指定する方法として、 <input type="file" name="xxxxx"> という方法がありますが、 これを使用した場合、指定したファイルがある 場所を表示することになります。 そうではなく、保存したいフォルダの場所が 指定できるようなHTMLはないでしょうか。 前者と同じように実際に保存されずに、 フォルダの場所が指定できるだけでいいです。 HPを調べたところ、それらしきものがありませんでした。 知っていらっしゃる方がいればよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • サーバカレント配下サブフォルダ内にファイルをアップさせたいのですが…

    ブラウザからローカルのファイルを指定して、実行ボタンを押すとサーバに、指定したファイルがアップされるプログラムを作成中です。 『copy($file, $file_name);』で、サーバにアップされるところまでは出来たのですが、このソース(.php)が存在するカレントに、ファイルがアップされてしまいます。 カレント配下に作成してあるサブフォルダ内にアップさせるには、どうすれば良いでしょうか? (もしくは、カレントにアップされたファイルを配下サブフォルダに移動でも良いですが) <以下PHPソースの抜粋> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ <TD nowrap><FONT size="-1">ファイル file</FONT></TD> <TD nowrap> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" SIZE="65536"> <INPUT TYPE="file" NAME="file" SIZE="42"> </TD> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ <TD nowrap><INPUT id=submit1 NAME=submit1 type=submit value=" 実 行 "></TD> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ if ($file_name != '' && $file_size != 0) { copy($file, $file_name); } ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~

    • ベストアンサー
    • PHP
  • javascriptでファイルを指定してアップロードができません

    ファイルのアップロード機能を実装したいのですが <input type="file" />タグは画面に表示したくありません。 そのため「アップロードファイルを指定」ボタンを押すとダイアログが開き ユーザがファイルを指定するよう実装してあります。 以下のコードを書いたのですが「指定しない」ボタンでは正常に動作しましたが 「アップロードファイルを指定」ボタンでは、アクションも呼ばれませんでした。 これは何が問題なのでしょうか? 教えていただけると助かります。 もしかして、javascriptから<input type="file" />を触る場合の セキュリティ制限でしょうか? /**************** 環境 ****************/ jquery 1.3.2 php 5 ie7 /**************** html ****************/ $(document).ready(function(){ $('#btnyes').click(function() { var oldval = ''; $('#fileUpload').click(); // パスが指定されればpost if($('fileUpload').val() != oldval) { execSubmit(); } }); }); function execSubmit() { $('#formBeforeEdit').submit(); } /**************** javascript ****************/ <form name="formUpload" id="formUpload" action="/xxx/xxx" method="post" enctype="multipart/form-data"> <input type="button" name="yes" id="btnyes" value="アップロードファイルを指定" /> <input type="button" name="no" id="btnno" onclick="execSubmit();" value="指定しない" /> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <input type="file" name="fileUpload" id="fileUpload" style="display: none;"/> </form>

  • 入力フォームにおける配列データに関して

    こんにちは。お世話になっております。 タイトルにあるように、フォームの中に入力されたデータを配列として、POSTするようなものを作成しました。 こんな感じ。 <p>ファイル</p> <input name="fl[]" type="file" size="50"><br> <input name="fl[]" type="file" size="50"><br> <input name="fl[]" type="file" size="50"><br> <p>キーワード</p> <input type="text" name="keyword[]" size="18"><br> <input type="text" name="keyword[]" size="18"><br> <input type="text" name="keyword[]" size="18"><br> このフォームは、ファイルをアップロードし、かつ各ファイル毎に関連するキーワードを入力・登録させるためのものですが、データをPOSTしたとき、ファイルもキーワードも配列としているので、ファイル1段目とキーワード1段目。ファイル2段目とキーワード2段目・・・といった形で配列に格納されるものと思っておりましたが、ファイルがローカル上の同じフォルダ内にあるものに限っては、配列への格納順が保たれるのですが、違うフォルダからアップロードさせると、配列への格納順が保たれないことに気付きました。 そもそも、上記のようなフォームの作成は誤っているものなのか? それとも、このような場合、違う形式でのフォームを作成すべきなのか?などなど・・ 経験の乏しい私には解決策が見出せずに、今回投函させていただいた次第です。 お忙しい中恐縮ですが、アドバイスなど頂戴出来れば幸いです。 宜しくお願い致します。

    • 締切済み
    • PHP
  • Javaによるフォルダーのアップロード

    通常、Javaでファイルのアップロードを行う場合HTMLのINPUTタグ(Fileタイプ)でファイルを指定してからアップロードを行いますよね。これと同様のことをフォルダでやりたいんですが・・・。 もしできるのであればサンプルのページなんかを教えて頂けたらと・・・・。

  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • perlでCSV形式ファイルのアップロード方法

    perlでCSV形式ファイルのアップロード方法を教えてさい。 htmlで <HTML> <BODY> <FORM action="excel読み込み.cgi" enctype="multipart/form-data" method="post"> フレアシステムのファイル: <INPUT type="file" name="upload_file" size="60"><BR> <INPUT type="submit" value="読み込み"> </FORM> </BODY> </HTML> として、ファイル名の指定をして、読み込みボタンを押すと、excel読み込み.cgiを呼び出すのですが、プログラムの内容が表示されるだけで終わってしまいます。 excel読み込み.cgiのプログラムは以下の内容です。 #! c:/perl/bin/perl use CGI; $query = new CGI; $filename = $query->param('upload_file'); while(read($filename, $buffer, 2048)) { $file .= $buffer; } @files = split(/\\/, $filename); ($basename, $exp) = split(/\./, $files[-1]); $new_file = $basename . "." . $exp; # ファイルを指定ディレクトリにコピー #open(OUT, "> c:\\foo\\$new_file"); open(OUT, "> c:\\$new_file"); binmode(OUT); print(OUT $file); close(OUT); print "Content-type: text/html\n\n"; print "[$basename] [$exp]\n"; print "正常終了\n"; exit; CGIのプログラムを色々と調べて、別のないようにしても同じようにプログラムがそのまま表示されてしまいます。 どなたか教えてください。 宜しくお願いします。

  • アップロードの方法

    ファイルの保存方法を教えてください。 アップロードファイル名は取得できましたが、ファイルの保存法が分からないので教えてください。 PHPは知っています。 PHPのようにテンポラリファイルに保存されるからテンポラリのパスを取得するのでしょうか? ASPの場合だと方法がさっぱり分かりませんでした。 <form enctype="multipart/form-data" action="a.asp" method="POST"> <input name="my_file" type="file" size="20"></td> <input type="Submit"> </form>

  • ReadParseを使ってのバイナリファイルのアップロード

    ファイルをアップロードするCGIを作ろうと思い、以下のように書いてみました。そうしたところテキストファイルのアップロードには成功しましたが、バイナリファイルだとアップロード出来ても開けなかったり、画像が崩れてしまったりしてしまいました。 何故バイナリファイルだとアップロードが失敗してしまうのかわかりません。どこを直せば良いのでしょうか。 よろしくお願いします。 ----------------------------------------------- フォーム <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="xxx.pl"> <INPUT TYPE="file" NAME="file"> <INPUT TYPE="submit" VALUE="アップロード"> </FORM> ------------------------------------------------ xxx.pl &ReadParse(*in, *f_name, *f_type); $f_name{'file'}=~/([^\\\/]+)$/; $filename = $1; open(IN, ">$filename"); print IN $in{'file'}; close(IN);

    • ベストアンサー
    • CGI
  • ファイルの指定方法について

    <input type="file" /> のタグでファイルの参照をすることは出来ますが、 ファイルではなく、フォルダを指定する方法はありますか? 可能かどうかと、出来ればソースを教えていただけたら幸いです。

専門家に質問してみよう