• 締切済み

Perlでファイルをアップロードさせたい

えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

  • CGI
  • 回答数4
  • ありがとう数3

みんなの回答

  • hajime84
  • ベストアンサー率50% (1/2)
回答No.4

サーバーがUnix と仮定して、もしsshが入っている場合は、クライアントの場合ssh クライアントを インストールする事で(ttssh[Win]とかNiftyTelnet[Mac])scp にてファイルを転送する方法があります。 使い方を記述すると、長くなるのでgooやgoogleなどでsshとscpで検索するだけで結構情報とれます。 あ、Perl 使ってないですね。。。

回答No.3

回答が遅くなってしまいました。  まず、HTTPのプロトコルを使う場合は(TYPE=fileだろうと、textareaに書き込む場合でも)サーバー側の負担は大して違いません。  TYPE=fileを使いたくない場合の方法としては、 1.テキストエリアにCSVデータをクリック&ペーストして書き込む。 2.ローカルでWebサーバーが走ってる場合、ローカルでファイルをUploadするCGIを作る。  この場合、Net::FTP 等のモジュールを使うとFTPでアップロード・ダウンロードができます。

  • hyde-la
  • ベストアンサー率28% (42/146)
回答No.2

レス遅れて申し訳ありません。 ちょっと調べて見たのですが、CVSはやはりサービスとして 提供出来るようです。 詳しくは下記URL等をご覧下さい。 ファイル転送を含むかどうかは明示的に書かれていませんが 内容から察するにファイル転送も含まれるようです。 Perlの出番がなくなりますが。 実は私も興味ありまして、これに関しては試して見たいと 考えているのですが、体調を崩してフラフラですので 21世紀になってしまうと思われます。

参考URL:
http://www.race.u-tokyo.ac.jp/users/moro/cvs/
  • hyde-la
  • ベストアンサー率28% (42/146)
回答No.1

何を教えて欲しいのかはっきりしませんが、 サーバーにファイルを送る方法ですか? FTPもHTTPも駄目となれば、残るはメールかsamba等のファイル共有ですかな。 (サーバーはUNIXだと過程して書いてます) それも駄目なら。。。 サーバーが自前なら専用のプロトコルを作ってしまえばいい気もしますが。 サーバー上でサービス提供出来る権限があって、Perlを 使うなら問題もないです。 ・・・CVSってネットワーク越しにファイルをcommitしたり updateしたりするのって 出来ないんでしたっけか??

Sadsfan
質問者

補足

サーバーにファイルを送りたいのです。サーバーはレンタルサーバーでUNIXです。サービス提供出来る権限あります。ダイアルアップなので一日一回程度データのバックアップを取るためにしたいと考えています。できる限りPerlのみでしたいのですが・・・いい方法があれば教えてください。お願いします。

関連するQ&A

  • Perlでファイルをアップロードしたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

  • ファイルのアップロード方法(Perl)

    <INPUT TYPE="file">で指定されたファイルをサーバーにアップロードする方法をさがしています。 CGIの記述言語はPerl、転送を行うファイルは画像ファイルです。 送られてきたデータを確認したところユーザー側のファイルへのフルパスなのは確認できましたが、そこからアップロードする方法が分かりません。 パールライブラリ(.plか.pm)でファイル転送を行う良いライブラリがあれば教えてください。 また、転送の方法を教えてください。

    • ベストアンサー
    • Perl
  • ファイルのデータがなくなってしまします・・・

    perl/CGIプログラミングの勉強中の者です。 フォーム記入(日付選択、本文の記入、ファイル選択)後、確認画面において、上記をベタ書きにて表示し(ファイルはパスの表示)、CSVへの書き込み、指定フォルダへのファイルのアップロードをするプログラムを作っています。 ファイルのアップロードに関してなのですが、 <input type=file name=fileup> でsubmitした後、 確認画面で$FILEに格納して一旦パスを表示、 それを再び <input type=hidden name=fileup value=$FILE> でsubmitして、 フォルダへアップロードし、一覧画面へと戻るという手順で組んでいます。 しかし、ファイル名、拡張子などは正しくアップロードされているのですが、肝心の中身のデータが0バイトになってしまいます。 自分では確認画面からsubmitする時にhiddenに入れているのがいけないのかなぁ。と思っているのですが… 何か良い対処法、また他に良い手順があれば教えてください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perl CGIで、アップロードができない

    Perl my $fhandle = $query ->upload('A'); HTML <INPUT TYPE="HIDDEN" VALUE="C:\temp\1.txt"/> ボタンクリックで、JavaScriptでHTMLのhiddenに値をセットしています。 その値をPerlでuploadすると、値がセットされません。 <INPUT TYPE="FILE" で、手動でセットすると上手くいきます。 なんんとかHIDDENでできないでしょうか? FILEでしか駄目な場合、JavaScriptで、FILEにセットする方法をご教授下さい。 今、現状はIFRAMEでFILEで選択したファイルパスをボタンクリックで、メインのFORMのHIDDENに渡して、CGIを呼んでいます。

    • ベストアンサー
    • Perl
  • ファイルをアップロードするには

    <input type="file"> で、ただ単に自分のPC内のファイルを サーバー上のあるフォルダにアップロードするには どうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • PHPでファイルのアップロード

    OSはLinuxのfedoraを利用しており、WebサーバーソフトはApacheを利用しています。 PHPを使って、クライアントからサーバーにファイルのアップロードをしたいのですが、プログラミングがあまり理解できておらず、アップロードができません。ちなみにphp.iniファイルの設定に関しては、アップロードは受け付けるようにしていますし、設定にミスはないと思います。 sample.phpというファイル名で下記のファイルを作ってみたのですが、アップロードすることができませんでした。まだPHPは初心者で間違いだらけだと思うのですが、こうすればアップロードできるようになるといった指摘をお願い致します。 <html> <head> <title> </title> </head> <body> <form enctype="multipart/form-data" action="sample.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <?php if(isset($uploadfile) and is_uploaded_file($uploadfile)) { if(move_uploaded_file($uploadfile, $path . "/var/www/html/test/" . $uploadfile_name)){ print("<br>Uploaded file saved."); }else{ print("<br>Uploaded file save failed."); } } ?> </body> </html>

    • ベストアンサー
    • PHP
  • ファイルのアップロードがどうしても出来ません。

    単に画像ファイルをアップロードさせるだけなのですが、何故か出来ません。プログラミングに関しては初心者ですので、どなたかアドバイスをよろしくお願いします。 ■アップロードフォーム用のHTMLファイルです↓ ファイル名=gazou_upload.html <html> <head> <title>ファイルのアップロード</title> </head> <body> <form method="POST" action="gazou_upload.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" > <input type="file" name="userfile"><br><br> <input type="submit" value="アップロード"> </body> </html> ■受け取ったファイルをサーバ上のディレクトリに移動するPHPファイルです↓ ファイル名=gazou_upload.php <?php if (move_uploaded_file($_FILES['userfile']['tmp_name'], "/image/")) { print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> ■ファイルを保存するディレクトリ 上のファイルと同じ階層で フォルダ名が image パーミッションは3つとも 707 にしました。 パーミッションが拒否されたというメッセージだと思うので、パーミッションを変更したのですがダメでした・・ちなみにサーバはロリポップを使っていて、777と666はエラーになると注意書きがあったので、707にしました。かなりハマっていて困っています。回答もしくはアドバイスをどなたかよろしくお願いします。

    • ベストアンサー
    • 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>

  • phpでftpのアップロードができないのですが・・・

    phpでftpコマンドを使ったアップロードができません。どこが間違っているのでしょうか。 ftpで接続してログインするところまでは間違いなくできているのですが・・・よろしくお願いします。 file.php のフォーム部分 <form enctype="multipart/form-data" action="fileupload.php" method="post"> <input type="FILE" name="File"><br>     <input type="SUBMIT" value="送信">     <input type="RESET" vaiue="取消">     </form> fileupload.php のアップロード処理部分 //アップロード後のファイルの名前を仮にaaa.txtとする $file2 = "/public_html/aaa.txt"; if(isset($_REQUEST["File"])){ $file=$_REQUEST["File"]; } $ftp = ftp_connect($hostname) or die("接続失敗"); ftp_login($ftp,$user,$pass) or die("ログイン失敗"); ftp_put($ftp, $file2 , $file , FTP_ASCII) or die("アップロード失敗");

    • ベストアンサー
    • PHP
  • php アップロードファイルが*.csv指定の問題

    <form name="csvupload" id="csvupload" action="csvread.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="30000" /><br /> csvfile:<input type="file" name="uploadfile" size="50" accept="text/comma-separated-values" /> <input type="submit" name="hyosi" value="ファイル表示" /><br /> </form> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。以下わたし作ったのサンプルで*.exeだとうまくいかなかった。初心者です。急ぎです。誰か助けてください。 if(isset($_POST['hyosi'])){ $file_dir = 'C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\\'; $file_path = $file_dir.$_FILES['uploadfile']['name']; if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){ print'*.csvhh拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; /* elseif(preg_match("/^.*\.(?!csv)$/",$_FILES['uploadfile']['name'])){ print'*.csv拡張子のファイルを参照してください。'; exit; */ } elseif($_FILES['uploadfile']['name'] == '' && $_FILES['uploadfile']['size'] == 0){ print'ngngng'; exit; } else{ if(move_uploaded_file($_FILES['uploadfile']['tmp_name'],$file_path)){ $csv_dir = "./csvfile/"; $csv_path = $csv_dir.$_FILES['uploadfile']['name']; $sfile = addslashes($csv_path); $_SESSION['file'] =$sfile; $file=fopen($sfile ,'r'); }else{ print '正常にアップロード処理されませんでした。'; exit; } } }

    • 締切済み
    • PHP