No.4ベストアンサー
- 回答日時:
1普通にテキストエリアからテキストを読むようにする
(多分これでとれたと思います)
2アップロードされたファイルから取得する
(ディレクトリの中を検索。先代はこれでやっていました)
最悪2でできるのでやってみてください
(ただしアクセスが多くなって処理し切れなくなると
どうなるか、考えただけでぞっとしますが...)
多分一番でできますのでやってみてください
っていうかソースプログラムにファイル名変換という気になる
フレーズがあるのでそっちの方が確実かも知れませんね
後は正規表現との戦いです(笑)
No.3
- 回答日時:
うーん、わたしの説明不足だったようですね。
確認というのはSadsfanさんがデバッグのためにと言うことだったのですが...
Sadsfanさんがunixマシン(telnetでもsshでも何でもいいですが)の
前にいらっしゃると仮定します。
まず送られて来たデータは$Tempの場所に保存されます。
(私の場合は./といった相対パスではなく/home/user/tempなどにしています)
ここに
(数字の羅列)__(目的のファイル名)
と間には_(アンダーバー)を2つ挟むと言う規則で
ファイルが保存されます。
よって正規表現でアンダーバーの前の数字をとってしまえば
もとのファイル名を取得することができるのです。
*__*(<-正規表現で書いた一般の形、顔になっちゃった)
ファイルの移動はアンダーバーを含んだファイル名から
正しいファイル名にと言う感じで
cp /home/user/temp/980815043__index.html /home/user/index.html
(ごめんなさい 最近perlやってないので普通のcpコマンドでかんべんしてください)
'/home/user'や'/home/user/temp'を変数に代入しておけば
文字列の連結でできると思います
ファイルの保存先を変えるときはパーミッションに気を付けてください
多分nobodyの書けるところじゃないと書けないはずですから...
この回答への補足
ご丁寧にありがとうございました。あと肝心なことを聞きたいのですが、アップロードされたファイル名はどう取得したらよいのでしょうか。
何度も質問すいません・・・お願いします!
No.2
- 回答日時:
え、ファイル名がだけ変わっているんじゃないの?
このperlファイルを見る限り
$Tempのディレクトリに送られて来たファイルが入っていて
そこからファイル名を変えて必要な場所に移動してあげれば
いいと思うんですが...
まずアップロードされたファイルがあるかどうか
確認してください
実験する場合はHTMLのようなテキストだけではなく
gifなどを混ぜて行うとちゃんと送信できたかどうかわかりますよ
この回答への補足
すいません補足しときます。確かにFTPとかでファイルの確認をすればいいと思うのですが、最終的にすべてCGIを使用する予定です。
今の時点ではファイル名がサーバーにアップロードされた時点でなにが頭につくかが判断することができません。となるとCGIでファイルのリネーム、移動などもできないのではないでしょうか。
ご指摘ありがとうございました。何か方法がおわかりになりましたらよろしくお願いします。
No.1
- 回答日時:
私も昔やったことがある(先代の人の直し)のでわかります。
確かにこれは厄介で困りました。
やり方は
($temp,$filename)=split /__/,$files;
$filesはファイルへのパスです(例 /uer/home/user1/980814043__html)
単に名前を変えてやれば良かったと思います
$filenameのなかを見てやればアップロードしたいファイル名になっていると思います
この回答への補足
ごめんなさい。変化なしです。おそらくファイルへのパスの$filesが別物だと思いますが、わからないので(雑誌に乗ってたやつなので)下にコピーしますのでもしおひまがありましたら、見てやってください。
よろしくお願いします。
__________________________________________________________________
use CGI_Lite;
require 'util.pl';
#
# 定数
#
$Temp = './temp';
$Platform = 'Unix';
$BUFSZ = 2048;
$CharSet = 'Shift_JIS';
$upload = new CGI_Lite;
# アップロード先
$upload->set_directory($Temp) or
exitError("ディレクトリ $Temp がオープンできません。");
# プラットフォームの設定
$upload->set_platform($Platform);
# バッファーサイズの設定
$upload->set_buffer_size ($BUFSZ);
# ファイル名の変換
$filename = $upload->filter_filename(\&convName);
$upload->close_all_files;
# フォームデータの解析
%data = $upload->parse_form_data;
if ($upload->is_error()) { # アップロードのエラー
exitError($upload->get_error_message());
}
print <<END_OF_HTML;
Content-type: text/html
省略
____________________________________________________________________
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(IT・Webサービス) WPからダウンロードしたファイル名を指定したい 2 2022/04/08 08:31
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- Google Drive Googleドライブについて 3 2023/08/06 12:19
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBScriptで、ファイルから任意...
-
Dreamweaver(ドリームウィーバ...
-
HTMLソースファイルからタグを...
-
Webでのファイルアップロードに...
-
VBAでサーバーにアクセスするに...
-
Dreamweaverで、一つのファイル...
-
秘密ファイルのサーバーへの保...
-
自宅サーバーに大容量(1GB...
-
URLに~/cgi-bin/~を隠す方法
-
Yomi-Search CGIですが・・・
-
実行可能な外部コマンドは?
-
CGIが実行されずにダウンロード...
-
LAN内に接続されているPCをリ...
-
ASP(IIS?)のエラーについて
-
掲示板のスレッドが消えた!?
-
FC2レンタルサーバーライトでの...
-
FTPにて553エラー
-
perlからphpを実行して結果を得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
JAVAで別サーバーのファイルの...
-
vbでFTPサーバーに対して、サー...
-
C# ファイル削除のエラーコード
-
空のファイル
-
Perl 別ドメインのファイル存在...
-
contenttypeについて
-
input type="file"で複数選択を...
-
CGI_lite.pmを使ったファイルの...
-
FTPでのアップロード後
-
自前のアップローダの作り方
-
WEB上で文書のアイコンを配置す...
-
Webフォルダでサーバーからイン...
-
サーバー上のフォルダ削除が出...
-
URLに~/cgi-bin/~を隠す方法
-
ラジオボタンのグループ化
-
ASPから既存のexcelブックを開...
おすすめ情報