2017-07-20 10 views
-4

これは学校プロジェクトであり、講師はコードの記述方法について知らない。PERL/CGI.pmを使用してSFTPを使用してHTML形式からリモートLinuxサーバに画像を転送する

またはNet::SFTPを使用せずにファイルを転送しようとしていますが、転送しようとしているサーバがこれらのサービスからの接続を許可しないためです。私はHTMLフォームを書いたので、CGIによってアップロードされたファイルの名前をつかむことができます。

Linuxサーバー上のPerlスクリプト内でSFTPコマンドを使用して、HTML形式でアップロードされたファイルをbashで転送することはできますか?

誰かがそれを行う方法を知っていれば、私はそれを変更して自分のスクリプトに挿入できるようにコードを投稿してください。

+1

どこからファイルを移動するのかを説明する必要があります。 CGIサーバー、ファイルがあるシステム、ファイルをコピーするシステムがあります。これらのシステムの2つは同じですか?私は、宛先システムがそれを受け入れない場合に 'SFTP'を使う理由を理解していません。 – Borodin

+1

*「誰かが行う方法を知っているなら、修正してスクリプトに挿入できるようにコードを投稿してください」*これはプログラミングのための良い方法ではありません。 – Borodin

+0

私はApacheとcgiスクリプトが存在するサーバーにファイルを置いています。私は教授から、それは不可能であると言われ、誰も20年間でプロジェクトを更新していません。 –

答えて

0
use CGI qw(:standard); 
use File::Basename; 
my ($name, $path, $extension) = fileparse ($productimage, '..*'); 
$productimage = $name . $extension; 
$productimage =~ tr/ /_/; $productimage =~ s/[^$safechars]//g; 
if ($productimage =~/^([$safechars]+)$/) { 
    $productimage = $1; 
} else { 
    die "Filename contains invalid characters"; 
} 

$fh = upload('image'); 
$uploaddir = "../../.hidden/images"; 
open (UPLOADFILE, ">$uploaddir/$productimage") 
    or die "$!"; binmode UPLOADFILE; 

while (<$fh>) { 
    print UPLOADFILE; 
} 

close UPLOADFILE; 

これは、ファイルをサーバーにアップロードするために使用したコードです。

+0

あなたのコードのフォーマット(そして 'Use'と' use'の2つのタイプミス)を修正しました。将来はもっと注意してください。 –

関連する問題