- ベストアンサー
画像投稿の遷移と表示について
- 画像投稿画面では、フォームにテキストと画像を入力し、確認画面で投稿内容を表示します。
- 画像の表示方法については、一時保存フォルダに保存して表示する方法や、ローカルの画像を表示する方法があります。
- また、画像のURLをデータベースに保存する際にも注意が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
確認画面が無いなら問題なく動かせるものを作れるということでしょうか? >これの確認画面での表示は一時保存フォルダ以外に >何処か同じサーバ内にフォルダ作って移動させて、 >表示させて後に消すといったことをしたらいいのでしょうか? 確認画面を挟む場合そうなります。 そのためのmove_uploaded_file()という関数がありますので、これを使ってhttpで外部から参照できる場所に移動します。 ちなみに一時ファイルはアップロードされた時のスクリプト実行終了時に削除されますので後から見に行っても無いはずです。 あと、このタイミングで操作が中断されるとゴミファイルが残りますので古いファイルが見つかったら削除するような処理も必要になります。 >FTP接続などは終了しているのですが、これも何処で >別サーバへアップしてURLを拾ってあと、 >データベースへURLのインサート処理していいのかよくわかりません。 (時間の掛かる処理でなければ)確認画面の投稿ボタンを押したときで良いと思います。 アップロードしたときの最低限のパス部分(hoge1/hoge2.jpgもしくはhoge2.jpg)だけをDBに保存して 固定になる部分(http://hogehoge.com/)は設定ファイル等に置いておいた方が無難かもしれません。
その他の回答 (1)
- yuuki0229
- ベストアンサー率70% (33/47)
>権限、グループがapacheになっています。 PHPはapache上で動いているためそのような権限が正常です。 >FTP関数の動作は上手く行ってるような感じがしますが、 >実際に画像サーバにアップロード出来てない状態です。 動きの怪しい部分は単体で実験すると良いです。 #FTPの確認をするために毎回ファイルを選択するのは面倒ですので DBとか関係なく、ftp関数を使用してダミーファイルをアップロードをするだけのスクリプトを用意して挙動を探るイメージです。 >普通にサーバに上げたファイルを今使用しているユーザーの権限で >デスクトップに取りだそうにも取りだせない状態だったので 所有者がapacheであればそのまま処理することは問題ないはずですので原因かどうかは怪しいです。 管理上不便であればchmodで666等に変更しても良いと思います。
お礼
ものすごく回答が遅くなり大変申し訳ありません。 丁寧な回答ありがとうございます。 どうにか解決しました。 ユーザーの問題というわけではなかったみたいでした。
お礼
回答ありがとうございます。 今の所、その教えていただいた move_uploaded_file()という関数を使って、 サイトと同一のファイルサーバ内のある箇所に フォルダを作成してそこへ画像ファイルを移動保存して、 それを確認画面に表示させてます。 DBにはFTPサーバへ移行させる前に固定値のURLを組み込んで、 残りを変数にしてその値をDBへ格納している方式を取っています。 一応、DBへのデータの格納は上手く行っています。 ありがとうございます。 しかし、肝心の画像がその後に確認画面で 投稿というボタンを押したらFTP関数のftp_put関数を使って、 保存しているファイルを 別のFTPサーバへファイルの移行という形で行っているんですが、 上手く行きません。 保管したファイルをroot以外の権限 (このroot以外の権限を使用しています)で移動しようにも $_FILESで一時保存の所に画像を持っていった時点でなってるのか わかりませんが、ムーブ関数実行後、保存したファイルの 権限、グループがapacheになっています。 プリントなどをしてみてプログラム上では FTP関数の動作は上手く行ってるような感じがしますが、 実際に画像サーバにアップロード出来てない状態です。 普通にサーバに上げたファイルを今使用しているユーザーの権限で デスクトップに取りだそうにも取りだせない状態だったので これが原因じゃないかと思っています。 権限、グループを変えるPHP関数を使ってみたものの、 これも上手く動作していないようで対象ファイルの権限が 今使用している権限へと変わりません。 このムーブ関数を使用したファイル以外の フォルダ、ファイル全て権限は同じなのですが…。 アパッチの設定を変えるしかない…んでしょうか…。 何か良い方法があればご教授いただけないでしょうか? お願い致します…。