• ベストアンサー

画像ファイル自動削除

あるフォルダ内に 同一日に画像データをアップロード。 違う日付で、画像アップロードすると以前の画像データが自動で削除されるには、 どのような方法・phpスクリプトにすればよいのでしょうか? 良い手法をご存知でしたら、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

こんな感じですかねぇ・・。まったくの未検証ですのであしからず(汗 $today = ('Ymd'); // 本日日付(文字列) $existsfiles = glob($uploaddir . '*.jpg'); // 既存の画像ファイルの一覧を取得 foreach ($existsfiles as $existsfile) { $fctime = filectime($existsfile); // ファイル作成日 if (date('Ymd', $fctime) !== $today) { continue; } // 本日以外はスキップ if ($fctime + 60 > time()) { continue; } // 60sec以内の作成はスキップ(一連のアクションでPOSTされたデータを考慮) unlink($existsfile); // 削除 }

murakami5656
質問者

お礼

誠に、ありがとうございます。

その他の回答 (3)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

私の問いには答えていただけませんでしたが、 >下記コードで受け取ってます。 を読む限りは、アップロードされるファイルはひとつひとつ個別に受け取るようですね。そうなると「同一日で一定時間経過している」ファイルを削除するしかないかなと思います。 が、「一定時間」というのをどの程度で設定すればいいのかわかりません。そのあたりの仕様はどうなりますか?

murakami5656
質問者

補足

■同一日削除で良いのです。お手数をおかけ致します。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>一回につき というのは一度のPOSTで受け取るということでしょうか? であれば、受け取ってmove_uploaded_fileをforeachで回す直前に保存ディレクトリのファイルでfilemtimeが本日のものをまとめて削除すればいいと思いますがどうでしょうか?あるいはデータベースに保存しているなら、データベースに格納した日時のカラムくらいはあるでしょうから、deleteのSQL一発でいいと思います。 そもそも「どうやって保存しているか」が提示されていないので、正しい回答は難しいと思います(汗

murakami5656
質問者

補足

何度もすみません! 下記コードで受け取ってます。 ?php $uploaddir = './'; //Uploading to same directory as PHP file $file = basename($_FILES['userfile']['name']); $uploadFile = $file; $randomNumber = rand(0, 99999); $newName = $uploadDir . $randomNumber . $uploadFile; if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { echo "Temp file uploaded. \r\n"; } else { echo "Temp file not uploaded. \r\n"; } if ($_FILES['userfile']['size']> 300000) { exit("Your file is too large."); } if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newName)) { $postsize = ini_get('post_max_size'); //Not necessary, I was using these $canupload = ini_get('file_uploads'); //server variables to see what was $tempdir = ini_get('upload_tmp_dir'); //going wrong. $maxsize = ini_get('upload_max_filesize'); echo "http://www.iroboticshowoff.com/dir/{$file}" . "\r\n" . $_FILES['userfile']['size'] . "\r\n" . $_FILES['userfile']['type'] ; } ?> なんせ初心者な物ですので宜しくお願い致します。 xcode側(iphon) NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init]; [request setURL:[NSURL URLWithString:urlString]]; [request setHTTPMethod:@"POST"]; NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data;boundary=%@",boundary]; [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithString:@"Content-Disposition:form-data;name=\"userfile\";filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithString:@"Content-Type:application/octet-stream\r\n\r\n"]dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[NSData dataWithData:imageData]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [request setHTTPBody:body]; NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString *returnString = [[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding]; NSLog(@"%@", returnString);

回答No.1

同じファイル名で上書きするだけでok。

murakami5656
質問者

補足

iphonでカメラ画像を一回につき10ファイル位アップ(同じ日) 次回アップする時は、前回の画像ファイルは自動的に削除される様にできるコードを 教えて下さい。

関連するQ&A