重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります画像ファイルをサーバーにアップロードしたいのですが、巧くいきません。以下のコードを実行しますと

O.K. File(C:\Documents and Settings\Administrator\My Documents\My Pictures\mozi_g0.gif) was uploaded as /tmp/upload_1111735699_26448

と表示されますが、これで本当に画像ファイルがアップされているのでしょうか?
私見だとサーバー側にtmpというフォルダーに画像ファイルがアップロードされるものと思い
/cgi-bin/upload.cgi
と同じ所にtmpというフォルダーを作りパーミッションは755にしましたが
アップロードをしても空フォルダーのままです、ローカルのフォルダーの画像をサーバー側に保存する方法を御教授お願い出来ませんでしょうか
html側のコード

<html>
<body>
<form action="/cgi-bin/upload.cgi" method="POST" ENCTYPE="multipart/form-data">
file <input type="file" name="uploadFile"><br>
<hr>
<input type="submit" value="OK">
</form>
</body>
</html>

ファイルアップロード本体(upload.cgi)
#!/usr/bin/perl
use CGI;

my($form) = new CGI;
print $form->header("text/html");

my($filename) = $form->param('uploadFile');

$uniqid = time . "_" . $$;
$newfile = "upload_$uniqid";

# ファイルの内容を表示する。
# このように、$filename をファイルハンドルのように使うこともできる。
#while(<$filename>){
# print $_ . "<br>\n";
#}

# ファイルを保存する。
open (OUTFILE,">/tmp/$newfile") or die "Can't make serverside file!\n";
while ($bytesread = read($filename,$buffer,1024)) {
print OUTFILE $buffer;
}

print "O.K. File($filename) was uploaded as /tmp/upload_$uniqid<br>\n";

A 回答 (1件)

共用で借りているサーバの場合、


/tmp/は直接見えないことが多いと思います。

open (OUTFILE,">/tmp/$newfile") or die "Can't make serverside file!\n";
を、
open (OUTFILE,">tmp/$newfile") or die "Can't make serverside file!\n";

と、冒頭の/を取ると、
現在のディレクトリ内に作ったtmpに保存されるはずです。
(パーミッションがきちんとしていることが前提です)

この回答への補足

shidhoさんお世話になります
ご指摘参考にさせて頂き
open (OUTFILE,">./tmp/$newfile") or die "Can't make serverside file!\n";
としたらサーバー上のtmpにファイルが出来ましたが
upload_1111746696_76986という空のファイルができましたが画像ファイルではないのですね、確かにプログラムを見ればそのように保存しているからなのでしょうが
このファイルを画像ファイルに変える何か処理方法があるのでしょうか?
すみませんが教えて頂けないでしょうか。
因みにこのコードは
http://www.stackasterisk.jp/tech/program/perl03_ …
の物です。

補足日時:2005/03/25 19:48
    • good
    • 0
この回答へのお礼

お世話になります自己解決いたしました
大雑把な表現ですが、
アップロードするファイル名を付ける(ローカル側の名前を利用しました)コードとファイルを送信するコードを切り分けて考えて組んだら無事に、
ローカル側のファイル名でサーバーに画像を転送できました。

お礼日時:2005/03/27 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!