アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

PHPでファイルをアップロードして管理するプログラムを作成していますが、日本語名がどうしても文字化けし、あまり日本語名を使わない方がいいという意見もあることから、どのようなファイル名でも指定できるようにして、保存するとき、プログラム側で、ファイル名を自動でYYYYMMDDHHII(例:200504160033.doc)みたいにしたいのですが、どこをいじったらよいのでしょうか。
(もし、日本語のファイル名が使えたとしても、同名のファイルだと、上書きされる問題もあるので。これだと、そういう問題もないと思います)何かアドバイスをいただけたらと思い、投稿しました。よろしくお願いいたします。

受け取る側のファイル.php
$uploaddir = "./images/";
$uploadfile = $uploaddir. $_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

A 回答 (2件)

$_FILES['userfile']['tmp_name']


は、phpで自動作成されたテンポラリファイル名ですので、
クライアントのファイル名を利用したいときは、
$_FILES['userfile']['name']
を指定します。

<?php
$uploaddir = "./images/";
list($file_name,$file_type) = explode(".",$_FILES['userfile']['name']);
$dateformat=date("Ymdhis");
$uploadfile = "$uploaddir$dateformat.$file_type";
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
?>
    • good
    • 1
この回答へのお礼

まさにドンピシャでした!
いろいろと勉強になりました。
本当にありがとうございます。

お礼日時:2005/04/16 11:47

php4から標準的なアップロード機能では$uploadfileが保存先のファイルパス + ファイル名+拡張子となっています。


そのスクリプトを修正するのであれば保存先を変更するだけの話しとなります。
$dateformatはstrftime関数などでお好きな形式で整形してください。

$uploaddir = "./images/";
list($file_name,$file_type)=explode(",",$_FILES['tmp_name']);
$dateformat="200504160033";
$uploadfile = $uploaddir.$dateformat.$file_type
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

参考URL:http://www.php.net/manual/ja/function.strftime.php

この回答への補足

ご回答ありがとうございます。

ただ、試してみたところ、ファイル名が200504160033となっただけで、拡張子が消えてしまいました。

今、いろいろといじっているのですが、まだ解決していません。よろしかったら拡張子はそのままに、保存できる方法はないでしょうか。よろしくお願いいたします。

今やったこと。
■$dateformat=date("Ymdhi");

■list($file_name,$file_type)=explode(",",$FILES['userfile']['tmp_name']); ←こんなふうにしたり、分割条件のカンマをピリオドにしたりしたのですが、うまくいきません・・・

補足日時:2005/04/16 09:58
    • good
    • 0
この回答へのお礼

いろいろとお世話になりました。
list や、 explode の使い方とかも勉強になりました。ありがとうございました。

お礼日時:2005/04/16 11:49

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