質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

4回答

5495閲覧

PHPでサーバーに一時ファイルを保存せず確認画面を表示、送信する

amaguri

総合スコア227

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

1クリップ

投稿2016/12/12 07:14

編集2016/12/12 08:05

現在smartyにて
絶対パスvar/www/datas
というフォルダに画像をアップロードするプログラムを
①ファイル選択画面
②送信確認画面(はい いいえ のボタン表示)画面
③送信完了画面

という風に作りたいと考えており
過去の質問や調べた結果
アップロードした一時ファイルはPHPの実行が終わった時点で削除されてしますようなので

例えば
①ファイル選択画面でファイルのディレクトリパスを取得
②送信確認画面 はいを押下された時FTPコマンドのようなもので①で選択したファイルパスをつかいvar/www/datasにuproad処理
③送信完了画面

のような動きで、サーバーに一時保存せずとも確認画面を表示する事が実現
可能かどうかお聞きしたいです。
FTPのようなものと記載しておりますが
ファイル選択画面でファイルを選択し
ファイル選択確認画面に遷移
遷移したファイルした確認画面にてはいを押した場合に初めて指定のディレクトリにサーバーをあげられればいいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobinobi

2016/12/12 07:27

まずディレクトリパスとは絶対でしょうか、それとも相対でしょうか。また、FTPコマンドのようなものということですが、パッシブや転送モードを指定したい等、条件はあるのでしょうか。そういった情報を追記して頂くと他の方々も回答しやすいかと思います。
guest

回答4

0

ベストアンサー

②送信確認画面 はいを押下された時FTPコマンドのようなもので①で選択したファイルパスをつかいvar/www/datasにuproad処理

サイトのページからクライアントのファイルへのアクセスはセキュリティ上のリスクがあるため、ブラウザでそのような機能は提供されていません。

サーバーに一時保存せずとも確認画面を表示する事が実現可能かどうか

上記の理由から、不可能です。


はいを押されたタイミングで初めてサーバーにファイルをアップロードする方法はないのでしょうか?

確認画面で再度アップロードすると考えるからできない。
「いいえ」のときに、アップロードされたファイルを無効にすると考えればいいでしょう。

投稿2016/12/12 07:22

編集2016/12/12 08:53
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2016/12/12 08:00 編集

なるほど、、、 これ上記の方法以外に 送信確認画面(はい いいえ)のみ表示される画面なのですが はいを押されたタイミングで初めてサーバーにファイルをアップロードする方法はないのでしょうか?
Y.H.

2016/12/12 08:09

「送信確認画面(はい いいえ)のみ表示」本当にこの要件のみでしたら、 ファイル選択画面のonsubmitイベントでreturn window.confirm('送信しますか?');とすればいい気がしますが。。。
amaguri

2016/12/12 08:12

そうなのですが画面遷移をしなければならない仕様でして困ってしまっています。。
退会済みユーザー

退会済みユーザー

2016/12/12 12:04 編集

「画面遷移をしなければならない仕様」仕様が…なんていったいたら、キリがない。無理な仕様は提案して変更すれば済むこと。
amaguri

2016/12/13 05:50

ありがとうございます。 今日提案して仕様変更してもらえるようになりました!
退会済みユーザー

退会済みユーザー

2016/12/14 02:20

仕様変更以外に対応できませんからそれはそれで良かったですねとは思いますが、そもそも業務でやっているのに、こういった技術的な部分をサポートしてくれる体制は社内にないのですか? むしろそのことの方が問題が大きいように感じます。
guest

0

この要望が後学のためならば、他の方の回答の通り、javascript等で実装を頑張ればよいかと思いますが、
そうでなく、先方の要望 とかならば、要望自体を捻じ曲げてしまってはいかがでしょうか。

1、ファイル選択画面(ボタンを「アップロード」ではなく「選択完了」みたいにしておく)
2、はい、いいえ画面を表示(裏でアップロードは完了しておく)
3、「いいえ」が押下されたら、テンポラリ削除
4、「はい」が選択されたら、完了画面の表示

上記の様にしておけば(画面上は)「はい」が押下された時点でアップロードしている様に見えます。

投稿2016/12/12 09:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1.
JavascriptやJQueryなどで画面を書き換え、画面遷移したように見せかけ、実際には画面遷移せず、その後の「はい」押下でファイルをpostする。

2.
確認画面でのpostで一度サーバがファイルを受け取り、サーバサイドに保存せずに、セーフエンコードしクライアント側にhiddenなどで送り返す。
確認画面の「はい」押下時のpostでhiddenを送出するので再度サーバ側はそのデータを受け取りデコードして保存する。
大きいファイルだと重くなる。

どちらにしてもやはり、それなりのサーバー側の知識とセキュリティ対策が必要となりおすすめできません。

投稿2016/12/12 08:22

mosa

総合スコア218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

厳密に言えば、ドロッパブルなエリアに画像をおいてimgのsrcを参照して
postで送ることも可能といえば可能なので、絶対にテンポラリが必要かと言えばそうでもないですが
特殊なことをやると、それなりのサーバー側の仕組みとセキュリティ対策が必要となり
めんどうなことこの上ないです。

普通にテンポラリ経由でアップ後移動するのが賢明です

投稿2016/12/12 07:28

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2016/12/12 08:02

なるほど、、、 今回どうしても 送信確認画面(はい いいえ)のみ表示される画面なのですが はいを押されたタイミングで初めてサーバーにファイルをアップロードしないといけないのですが 何か方法はないのでしょうか?
yambejp

2016/12/12 08:27

「はい」を押して初めてサーバーにおくるとなるとセッションに保存しておくこともできないので理論上むずかしいですね。 擬似的に選択した後に遷移をせずにファイル送付関連の表示を画面の外に飛ばしちゃえば、似たような画面は作れるんじゃないですか?そういうことではない?
amaguri

2016/12/12 09:09

遷移は必ずしないといけなくて名前とかの取得も裏でできたらいいんですけど、、、
yambejp

2016/12/12 10:33

遷移をするのにサーバーに送らないということですね? そうなるとlocalStorageとからめてやるくらいですかねぇ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問