PHPを利用した画像ファイルの登録システムのメンテナンスをしています。
今までは登録画面 → 完了画面という流れだったものに、間に確認画面を追加するというものです。
登録画面から確認画面間の<form>タグによるファイルデータのPOSTができていることはvar_dumpで中身がNULLでないことを確認済です。
また、確認画面で選択画像をプレビューするために一時アップロード用のフォルダを用意しているのですが、
登録作業前にフォルダ内のクリア処理を実行させておりそちらも正常に動作しています。
そのため、FTPでのアクセスは確立されているようなのですが、どうにもファイルのアップロード処理が上手くいきません。
複数ファイルを受け取れる様にしているので、受け取った順に「tmpXX.jpg」(XXは連番)という名前にしてアップロードしたいです。
依頼元の環境の都合上、phpを動作させるアクセス用のサーバと画像ファイルをバックアップしておくサーバが別々になっています。
そのため、formからPOST後にFTPを利用して指定のサーバへファイルをアップロードする流れになっております。
初心者のため要領を得ていないところもあるかと思いますが、お力添えいただけますと幸いです。
また、ソース内の具体的な数値は伏せさせていただいているところもあります。
php
1//POSTされたファイルデータの処理 2 3// ファイルボタンで選択したデータの数をカウントする 4$imgData = count($_FILES['list1_IMGURL']['tmp_name']); 5for($countData = 0; $countData < $imgData; $countData++){ 6 7 // ファイル名の.移行(拡張子)を取得する 8 $fileName = substr(strrchr($_FILES['list1_IMGURL']['name'][$countData], '.'), 1); 9 10 // 拡張子が「jpg」「jpeg」ならば、登録用の配列に代入する 11 if($fileName == 'jpg' || $fileName == 'jpeg' ){ 12 13 // 画像データが選択されているか確認し、選択されていれば、配列に代入する。 14 if (is_uploaded_file($_FILES['list1_IMGURL']['tmp_name'][$countData])) { 15 16 $checkFile[] = file_get_contents($_FILES['list1_IMGURL']['tmp_name'][$countData]); 17 18 // ファイル数用のカウンタ 19 $fileCount++; 20 21 } 22 } 23}
php
1//FTPアップロードの処理 2 3 // FTP接続情報を設定する 4 $ftp = array( 5 'ftp_server' => '〇〇〇.〇〇〇.〇〇〇.〇〇', 6 'ftp_user_name' => '〇〇〇〇', 7 'ftp_user_pass' => '〇〇〇〇' 8 ); 9 // バックアップ先フォルダ名 10 $remoteFolder = '/〇〇/tmp/image/'; 11 12 // FTP接続を確立する 13 $connId = ftp_connect($ftp['ftp_server']); 14 15 // ユーザ名とパスワードでログインする 16 $loginResult = ftp_login($connId, $ftp['ftp_user_name'], $ftp['ftp_user_pass']); 17 18 // FTPサーバ上でバックアップ先フォルダに移動する 19 if(ftp_chdir($connId, $remoteFolder)){ 20 21 // カレントディレクトリの内容を得る 22 $deleteFile = ftp_nlist($connId, $remoteFolder); 23 24 //クリア処理 25 foreach($deleteFile as $dfile){ 26 27 ftp_delete($connId, $dfile); 28 } 29 30 <--- ここまでは動作確認済 ---> 31 32 //ファイルアップロード 33 $tmpCount = 0; 34 foreach($checkFile as $ufile){ 35 36 $tmpCount++; 37 $tmp_file = 'tmp'.$tmpCount.'.jpg'; 38 39 ftp_put($connId, $tmp_file, $ufile, FTP_BINARY); 40 } 41 } 42 43 // 接続を閉じる 44 ftp_close($conn_id);
回答1件
あなたの回答
tips
プレビュー