• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ReadParseを使ってのバイナリファイルのアップロード)

バイナリファイルのアップロードに失敗する理由と解決方法

miy2021の回答

  • miy2021
  • ベストアンサー率29% (7/24)
回答No.1

テキストファイルは、ASCIIでそのまま送れるのに対して、バイナリファイルは、バイナリだ、ということを認識させないとだめだと思うのです。 ですから、ファイルのタイプによって、転送時のモードを変更するようにしてやればいいと思うのですが。perlはよくわからないのですが、多分そういうことだと思います。

ryogoku
質問者

お礼

回答ありがとうございました!

関連するQ&A

  • バイナリファイルのアップロード

    とあるサイトのマルチパートリクエストの使用事例をそのまま使って153KB程度のGIFファイルをアップロード実験してみましたら、処理後ブラウザで「cgi-lib.pl: Request to receive too much data: 153345 bytes 」と表示されアップロードされません。表示の意味と、どうすればアップロードできるかを教えてください。 ● サンプルHTML <html> <head><title>ファイルアップロード</title></head> <body> <form method="POST" action="upload.cgi" enctype="multipart/form-data"> <input type="file" name="upload"> <input type="submit" value="送信"> </form> </body></html> ● サンプルCGI require "cgi-lib.pl"; &ReadParse; $upload = $in{"upload"}; # ファイル内容を取得 $name = $incfn{"upload"}; # ファイル名を取得 $name =~ s/\\/\//g; # パス区切り文字を/に変換 $name = substr($name,rindex($name,"/")+1); # ファイル名のみを取得 if($upload ne "" && $name ne ""){ open(FILE,">$name"); binmode(FILE); print FILE $upload; close(FILE); }

    • ベストアンサー
    • Perl
  • PHPでファイルアップロードがうまくいきません

    PHP初心者なんで宜しくお願い致します。 ファイルアップロードのシステムを作っているんですが どうもうまくいきません。 <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 写真:<input type="file" name="file" size="40" /> <input type="submit" name="new_write" value=" 登録 "> </form> <? if(isset($_POST['new_write'])){ $filename = $_FILES['file']['name']; $updir = "./image/".$filename; if(move_uploaded_file($_FILES['file']['tmp_name'], $updir)){ print "OK"; }else{ print "NG"; } } ?> 上記の記述をしています。 そしてphpinfo()で情報を確認しても file_uploadsはONになっています。 そしてPHPのバージョンは4.4.2です。 単純なことかもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Perlのファイルのアップロードの方法についてお聞きします。

    Perlのファイルのアップロードの方法についてお聞きします。 &ReadParseを用いた方法で、 $file = $in{'TENSOU'};で$file自体にデータが入るので 簡単だなと思っていましたが、送信元と送信後のファイルが若干違っていました。 使い方が間違っているのでしょうか? 以下、サンプル ◆HTML側 <FORM ACTION="up.cgi" ENCTYPE="multipart/form-data" METHOD="POST"><P> ファイル: <INPUT TYPE="file" NAME="TENSOU" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> ◆Perl側 &ReadParseの例を用いた方法 #!/perl/bin/perl #!/usr/local/bin/perl use CGI; use CGI::Carp qw(fatalsToBrowser); #--->エラー対策 require 'cgi-lib.pl'; require 'jcode.pl'; $BUFSIZE = 2048; &ReadParse; # ==> 強力な変換 $file = $in{'TENSOU'}; # ==> 実態自体がデータなので、取り扱いしやすい $file_size = length($file); $file_size *= ($BUFSIZE / 1024); open(OUT, "> test.jpg"); print(OUT $file); close(OUT); print "Content-type: text/html\n\n"; print "$file_size(KB)<br>\n"; print "<a href=\"test.jpg\">テスト</a>\n"; exit;

    • ベストアンサー
    • CGI
  • アップロードされてきた画像ファイル

    フォームからアップロードされてきた画像ファイルを、適当なファイル名を付けてJPGあるいはGIFの拡張子で保存し、HTMLファイルで保存した画像を一覧表示させようというCGIスクリプトを作りたいと考えています。 <FORM action="xxxx.cgi" method="post" enctype="multipart/form-data"> <INPUT type="file" name="gazo"> <INPUT type="submit"> </FORM> とこんな具合のフォームから画像ファイル(JPGやGIF)をアップロードした時、 受け手のxxxx.cgiでは、この画像ファイルのデータをどのように受けたらよいのでしょうか? cgi-lib.plを読み込んで、$in{'gazo'} というような形で画像ファイルのデータを受け取ればよいのでしょうか?

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

    お世話になります。 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
  • ファイル選択と同時にアップロード HTML+JS

    HTMLとJava Scriptのことを質問させてください <form>タグからファイルを選択すると同時をアップロードしたいと思っています。 複数の「ファイルを選択ボタン」を設置し、それぞれ"001.jpg"、"002.jpg"など指定の名前でアップロードしたいです。 下記のようにいくつかの<form>タグを設置し、javascriptでコントロールできるかと思いケース1のように書いた場合はうまくいったのですが、ケース2のように複数並べて記述した場合、動かなくなり困っております。 どなたか教えていただけないでしょうか? よろしくお願いいたします ケース1) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script> ケース2) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; var form = document.getElementById("upload_file2"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script>

  • 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>

  • &ReadParseについて

    perlで&ReadParse(*Param);とした場合にこのParamには何が入ってくるのでしょうか? フォームには checkboxとアップロードファイルのデータが入っています。 アップロードするファイル名が入っていて チェックボックスには1と3にチェックが付いています。 <form action=sample.cgi method=POST ENCTYPE=multipart/form-data> <input type="file" name="file" id="file"> <input type="checkbox" name="chk" value="1"> <input type="checkbox" name="chk" value="2"> <input type="checkbox" name="chk" value="3"> </form>

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

    いつもお世話になっております。 ファイルをアップロードするプログラムを作成しています。 最大ファイルサイズを200MBに設定しようと思っております。 PHPの設定を行なったのですが、ブラウザがフリーズしていまい うまくアップロードできません。 設定は下記のようにしました。 間違い、アドバイスがありましたら、ご教示お願いいたします。 よろしくお願いいたします。 test.php -------------------------------------------------- <form name="form1" method="post" action="test.php" enctype="multipart/form-data">  <input type="hidden" name="MAX_FILE_SIZE" value="200000000" />  <input name="mfile" type="file">  <input name="cfm" type="submit" value="確認画面へ"> </form> php.ini -------------------------------------------------- max_execution_time = 180 memory_limit = 250M post_max_size = 225M upload_max_filesize = 225M <環境> PHP:5.2.5

    • 締切済み
    • PHP
  • ファイルのアップロードができません

    今日始めたばかりの初心者です。 PHPだとCGIに比べ、ファイルのアップロードとか画像の処理が簡単に行えそうなのでチャレンジしてみたのですが、いきなりつまづいてしまいました。 とりあえずファイルをアップロードしてみようと思い、下のようなサンプルをアップロードしてみたのですが、さっぱり動きません。 適当なjpgファイルをアップロードすれば、スクリプトのあるディレクトリに”aaa.jpg”という名前で保存すると思うのですが…。 最後の”var_dump($_FILES);”という命令で、アップロードされたファイルの内容を表示させてるはずなのですが、ファイル送信前も後も”array(0) {}”としか表示されません。 PHPのバージョンは4.34です。 どなたかご教授お願いします。 ************************ <form enctype="multipart/form-data" method="post"> Upload File:<input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <pre> <?php if (!empty($_FILES)) { move_uploaded_file($_FILES['userfile']['tmp_name'],'aaa.jpg'); } var_dump($_FILES); ?> </pre> ************************

    • ベストアンサー
    • PHP