• ベストアンサー

繰り返しファイルをアップロードしたい。

for($w=5;$w<$all_gyou;$w++){ $fnme = $folder_name."/".$fnme; open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; print "完了<BR>\n"; }#for のようにして、アップロードを行いました。 回数分きちんと 「完了」 は表示されますが、アップロードは1回目のみしか行われません。 ということはforの文が間違ってるということでもなさそうなのですが…。 書き込みは特別1回しかできないものなのでしょうか?

  • w-inty
  • お礼率72% (1169/1618)
  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

まず、どのような名前・パスのファイルが生成されることを期待されているのでしょうか? forループに入ったときの変数が、下記の様な状態だった場合、 $fname : "hoge.txt" $folder_name : "abc" ↓こんな感じのファイルを書込むようなプログラムになっています。 カレントディレクトリ/abc/hoge.txt カレントディレクトリ/abc/abc/hoge.txt カレントディレクトリ/abc/abc/abc/hoge.txt カレントディレクトリ/abc/abc/abc/abc/hoge.txt カレントディレクトリ/abc/abc/abc/abc/abc/hoge.txt ディレクトリが存在しない場合は書込めませんので、forループに入る前にこの様な階層のディレクトリがあらかじめ存在しなければなりません。

w-inty
質問者

お礼

回答ありがとうございます。 自分としては 1回目 $fname : "hoge.txt" $folder_name : "1abc" 1回目 $fname : "hoge.txt" $folder_name : "2abc" ↓ カレントディレクトリ/1abc/hoge.txt カレントディレクトリ/2abc/hoge.txt というようなつもりで書いたのですが…。 ためしに 1abcの下に2abcを作成して、実行してみましたが、特に2abcの中にはファイルは作成されませんでした。 (1abcの中には作成されました。)

w-inty
質問者

補足

無事解決しました。 ありがとうございました。

その他の回答 (1)

noname#9431
noname#9431
回答No.1

ざっと見ただけですが、 ループのなかでファイル名が変ってないのでは? つまり上書き。

w-inty
質問者

お礼

回答ありがとうございます。 ためしに $fnme = "1" . $fnme . $file_time . $file_type; $fnme = $folder_name."/".$fnme; open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; print "$folder_name 完了<BR>\n"; と書き出してみたところ、書きこみを行いたいフォルダ名がきちんと表示されてきました。 ということはちゃんと$folder_nameはかわっている、ということなのではないのでしょうか?

関連するQ&A

  • 指定したフォルダにアップロード

    Perlを使用してアップローダーを作成しました。 今までは # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; としていたんですが、これではファイル数が多くなった時にエライことになるので、ディレクトリを作成してその中に…と思いまして。 で、ディレクトリをオープンが opendir DIR, "$folder_name"; ということはわかったのですが、 これを上記と組み合わせるにはどうしたらいいのでしょうか? ためしに opendir DIR, "$folder_name"; open OUT, ">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; closedir folder; としてみましたが、普通にcgiがあるフォルダにアップロードされてしまいました(^^; ディレクトリの中のファイル名を取得とかはあったんですが、指定のフォルダにアップロード、が見つからなくて…。

    • ベストアンサー
    • Perl
  • pl にてファイルをアップロード設定したいのですが...

    参考書を手に下記指示をしていますが...動きません; ■アップロード指示部分 <form action="$uppdffile" method="post" enctype="multipart/form-data"> <input type="file" name="upfile" size="40"><br> <input type="submit" value="アップロード"> <input type="reset" value="クリア"> </form> ■アップロード処理部分 my $upfilename = 'enq.pdf'; my $upfile = $buf{'upfile'}; my $upldir = '/usr/local/apache/htdocs/enq'; my $upshori = "$upldir/$upfilename"; sub uppdffile { open(OUT,"> $upshori"); binmode(OUT); binmode(STDOUT); print OUT $upfile; close(OUT); chmod(0666, $imgfile); } 動いてくれません... 問題箇所がお分かりの方がいましたらお教えください。 何卒よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ファイルがアップロードされずファイルパスが表示される

    $upfile = $param{'upfile'}; # マックバイナリ対策 if ($macbin) { $length = substr($upfile,83,4); $length = unpack("%N",$length); $upfile = substr($upfile,128,$length); } # 添付データを書き込み $imgfile = "$ImgDir$mynum$tail"; if (!open(OUT,"> $imgfile")) { if ($clip_err) { &check_ok; } } binmode(OUT); binmode(STDOUT); print OUT $upfile; close(OUT); chmod(0666,$imgfile); 全体像を示せなくてすみません。$tailは拡張子。 画像ファイルアップロードつき掲示板を作成しています。 惜しいところまでたどり着きました。 「添付」ファイル(画像)をアップロードすると フォルダーの中にコンピュータのファイルパスが記述された だけになります。↓ C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg なぜ画像がアップロードされないのでしょうか? 画像のファイルパスがアップされます。 $paramのところが&Readparseを使って$inでないとダメなんで しょうか?&Readparseは呼び出しておりません。 元にした上手く画像がアップされるのは&Readparseで$inを 変数として使用しております。 しかし、いままで$paramでやってきてすべて$inに変えると 違うところがエラーが起こりそうです。 require "./jcode.pl"; require "./cgi-lib.pl"; を記述しています。 なにかヒントになることがあれば教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • jQuery複数ファイルアップロード

    お世話になります。 jQuery Multiple File Upload Pluginを使って複数のファイルをアップロードしたいですがサーバー側でどのように受けたら良いか分からず困っています。 次のコードですと、アップロードするファイルが1個なら問題ないのですが、複数あるとに2番目以降のファイルの指定方法が分かりません。 http://javascript.webcreativepark.net/library/jquery_multiple_file_upload_pluginではname="upfile"が書かれておらずfile1[]、file2[]と読めると書いてあったのですができませんでした。 【html側】 <input type="file" name="upfile" class="multi" maxlength="5"/> 【サーバー側】※PHP print_r ( "アップロードファイル名 : " . $_FILES["upfile"]["name"] . "<BR>"); print_r ( "MIMEタイプ : " . $_FILES["upfile"]["type"] . "<BR>"); print_r ( "ファイルサイズ : " . $_FILES["upfile"]["size"] . "<BR>"); print_r ( "テンポラリファイル名 : " , $_FILES["upfile"]["tmp_name"] . "<BR>"); print_r ( "エラーコード : " . $_FILES["upfile"]["error"] . "<BR>");

    • ベストアンサー
    • PHP
  • 画像ファイルアップロード

    PHP初心者です。以下のスクリプトを参考書を参考に記述しました。リンクでtmpfileが表示されるのはわかるのですが、このファイルに画像を表示するにはどうしたらいいですか?<img src="">で表示されなかったので、他に表示方法はあるのですか?また画像を表示したときにimagecopyresampled();を使ってサイズを設定したいと思っています。 <?php print <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>ファイルのアップロード</title> </head> <body> <p>ファイルのアップロード</p> <form method="post" enctype="multipart/form-data" action="index.php"> <input type="hidden" name="maxfilesize" value="10000" /> アップする写真データ<br> <input size="30" type="file" name="upfile" /><br /> <input type="submit" name="submit" value="送信" /> <input type="reset" name="reset" valuie="リセット" /> </form> HTML; if($submit !=""){ if($submit == "none"){ print"ファイルのアップロードができませんでした。"; exit; } copy($upfile,"tmpfile.txt"); print"アップロードされたファイルの情報<br>"; print"ファイル名:$upfile_name<br>"; print"ファイルサイズ:$up_size<br>"; print"ファイルタイプ:$up_type<br>"; print"<a href=\"tmpfile\">ファイルへリンク</a><br>"; } print <<<HTML </body> </html> HTML; ?>

    • ベストアンサー
    • PHP
  • ファイルのアップロード処理を確認画面で確認後にアップロードするようにし

    ファイルのアップロード処理を確認画面で確認後にアップロードするようにしたいのですが、プログラムの書き方がわかりません。確認画面を通さずにやればアップロードできるのですが。どうすればいいのか教えてもらえるとうれしいです。 流れとしては「アップロード画面でファイルを指定」→「確認画面でアップロードボタンを押す」→「アップロード結果画面」です。作成中のソースは以下のようになっています。 ■upload.html(アップロード画面) <html><head><title>アップロード画面</title></head><body> <form action="kakunin.php" method="post" enctype="multipart/form-data"> ファイル:<br> <input type="file" name="upfile" size="30"><br> <input type="submit" value="確認画面へ"> </form></body></html> ■kakunin.php(確認画面)<未完成> <html><head><title>確認画面</title></head><body> <?php $upfile=$_POST['upfile']; print "選択したファイル: $upfile<br>\n"; ?> <br>この内容でよろしいですか?<br> よろしければ「アップロード」ボタンを押してください。<br> <form action="uploadkekka.php" method="post" enctype="multipart/form-data"> <input type="submit" value="アップロード"> </form></body></html> ■uploadkekka.php <html><head><title>アップロード結果</title></head><body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "uploadfiles/" . $_FILES["upfile"]["name"])) { chmod("uploadfiles/" . $_FILES["upfile"]["name"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできませんでした。"; } } else { echo "ファイルが選択されていません。"; } ?> </p></body></html>

    • ベストアンサー
    • PHP
  • ファイルアップロードを教えて下さい。

    お世話になります。 php初心者です。 初歩的な質問になると思いますが… ローカルでファイルのアップロードのスクリプトの練習をしてるのですが上手く行きません。 アップロードしたファイル名が全て同じになります。 ディレクトリ構成として htdocs  ├128.php  └phpbook(ディレクトリ)    └128-2.php ■128.phpの中身 <form action="./phpbook/128-2.php" enctype="MULTIPART/FORM-DATA" method="POST"> ファイル:<input type="FILE" name="upfile"> <input type="submit" value="アップロード"> </form> ■128-2.phpの中身 <?php if(move_uploaded_file($_FILES['upfile']['tmp_name'], "./htdocs/phpbook/") ==FALSE){ print "失敗しました。"; }else{ print ($_FILES['upfile']['name']); print "をアップロードしました。"; } ?> アップロードは出来てるのですが、phpbookディレクト内にphpbookという拡張子が何もついてないファイルがアップロードされてしまいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBAでアップロード

    ホームページ作成をしているのですが、ローカルにあるhtmlファイルをvbaでアップロードしたいのですが やり方がよくわかりません。 ソースは *************************************************************** <TABLE border=0 cellSpacing=0 cellPadding=0 width=650> <TBODY> <TR vAlign=top> <TD width="50%"> <TABLE style="FONT-SIZE: 12px" border=0 cellSpacing=1 cellPadding=3 width=323 bgColor=#ff6600> <FORM encType=multipart/form-data method=post action=/tok2_ftp/index.php> <INPUT name=act value=upload type=hidden> <INPUT name=MAX_FILE_SIZE value=300000 type=hidden> <INPUT name=dirname value=/ type=hidden> <TBODY> <TR align=center> <TD bgColor=#ffcc66>ファイルアップロード</TD></TR> <TR align=center> <TD class=line-height1 bgColor=#ffffff> <BR>アップロード可能なサイズは、1ファイル300kbまでです。<BR> <FONT color=#ff0000>※既に同じファイル名が存在する場合は上書きされます。</FONT> <BR><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file> <BR><BR><INPUT style="WIDTH: 150px" value=アップロード type=submit> <BR><BR></TD></TR></FORM></TBODY></TABLE></TD> *************************************************************** このような感じなのですが、 VBAで objIE.document.all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない objIE.document.forms(0).all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない 'objIE.document.forms(0)("upfile[]").Value = "test" 'エラー 'objIE.document.all("upfile[]").Value = "test" 'エラー objIE.document.forms(0).submit '押せる こんな事をやってみましたが、値を入れる事ができません。 解決方法を教えてください。

  • ファイルアップロードについて【ギブアップです】

    さくらレンタルサーバーを使っています。 クライアントからサーバーへファイルをアップロードする仕組みを作りましたが、ファイルアップロード失敗になります。 どこがいけないのでしょうか? どうしてもわからず質問させて頂きました。 (さくらレンタルサーバーでは不可能??) <HTMLファイル> <html> <head>テスト</head> <body> <form action="./aaa.php" enctype="MULTIPART/FORM-DATA" method="POST"> ファイル:<input type="FILE" name="upfile"> <input type="submit" value="アップロード"> </form> </body> </html> <PHPファイル(aaa.php)> <?php if (move_uploaded_file($_FILES['upfile']['tmp_name'], "/home/test_serv/www/test/files/")){ print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> 出力結果は、「ファイルアップロード失敗」になります><;

    • ベストアンサー
    • PHP
  • ファイルアップローダーについて

    Perlを使用してCGIのアップローダーを作成しています。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1177414 の続きなのですが、Web上にあるコードを持ってきて、自分なりに変更してみました。 上記のものだと、ラジオボタンがないので、そこを追加して、さらに拡張子に何がくるかわからないので下記のようにして拡張子を求めました。 ################## # 拡張子を求める # ################## $filename = $in{'upfile'}; $substrings = "."; $position = rindex $filename, $substrings; $file_type = substr($filename, $position); $fnme = $fnme . $file_type; # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; $mes = '書き込みが完了しました。'; 無事拡張子も出て、「sample.***」という感じでアップロードできたのですが、アップロードできたこのファイルを開こうとすると、 gifは「種類を特定できません」、bmpは「このファイルは読み取れません。このビットマップファイルは無効であるか、または現在サポートされていない形式です」 と出てしまいました。 こんな風に拡張子を取得したのではダメなのでしょうか?

    • ベストアンサー
    • Perl