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

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

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

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

Q&A

解決済

3回答

4462閲覧

拡張子の変更がしたい。

toutou

総合スコア2050

PHP

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

0グッド

0クリップ

投稿2016/08/18 12:59

編集2016/08/18 15:03

###前提・実現したいこと
PHPのPOSTにファイルを入れて送りました。
無事送られてることをvar_dumpで確認済み。
その後IF関数で送られたときの処理を書いてます。
送ったサーバー内で
拡張子を変更し最終的には入れたのと同じファイルを別の拡張子で
ダウンロードするのが目標です。

###発生している問題・エラーメッセージ
拡張子の変更ができない。
拡張子が途中でなくなる。
string(0) ""がでる。

###試したこと
POSTから取り出し変数にいれ文字列として ..txtでファイル名の最後に足してみた。
str_replaceで拡張子の文字を変更してみた。

<form method="post" enctype="multipart/form-data"> ファイル<br> <input type= "file" name= "fa" ><br> <input type="submit" name="ap" value="アップロード"> </form>
<?php if($_POST['ap']){ $fa= ($_FILES['fa']); $fa2= $fa.".txt"; var_dump($fa2); ?>
<?php if($_POST['ap']){ $fa= ($_FILES['fa']); $fa2= str_replace(dic,txt,$fa); var_dump($fa2); ?>

上のでテキストファイルが出来てるか試しにflie()に入れてみたり
fopen()もしてみたがなんも起こりませんでした。

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

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

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

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

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

guest

回答3

0

html

1<?php 2ini_set('display_errors', 1); 3error_reporting(E_ALL); 4 5if (isset($_FILES['fa']) && 0 == $_FILES['fa']['error']) { 6 $orgname = $_FILES['fa']['name']; 7 $newname = str_replace('.doc', '.txt', $orgname); 8 9 var_dump($newname); 10} 11?> 12<!DOCTYPE HTML> 13<html lang="ja"> 14 <head> 15 <meta charset="UTF-8"> 16 <title></title> 17 </head> 18 <body> 19 <form method="post" enctype="multipart/form-data"> 20 ファイル<br> 21 <input type="file" name="fa" ><br> 22 <input type="submit" name="ap" value="アップロード"> 23 </form> 24 </body> 25</html>

POST メソッドによるアップロード

イメージ説明

投稿2016/08/18 15:18

編集2016/08/18 17:44
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

toutou

2016/08/18 17:07

名前も拡張子も変わってるようなのですが ファイルに書き込むとファイル名しかでないです。 中身が変わっているように思えるのですが中身を変えずにしたいです。 自分でディスクトップなどで手動で拡張子を変えても中身が変わらないあの感じにしたいです。 もしかしたら確認の仕方が間違えてるかもしれませんが現状こんな感じです。 アドバイスなどありましたらよろしくお願いします。
退会済みユーザー

退会済みユーザー

2016/08/18 17:13 編集

やりたいことだけ伝えて聞くだけじゃ、都合よく回答者を働かせてソースを書かせているだけになっちゃいますよ。 var_dump($_FILES); にどんな値が入るのか、また、リファレンスにはなんと書いてあるのか確認しましょう。
toutou

2016/08/18 23:51

すみませんでした。 これはすぐ答えがほしかったので気が急いでいました。 もうちょっと時間をかけてやるべきですね。冷静になります。 それでもわからなかったら数日後にまた質問するかもしれませんのでそのときはよろしくお願いします。
guest

0

該当部分だけでなく、送信部分のHTMLも付けてください。

var_dumpによってあなたが確認できたのは何ですか?
ファイル名でしょうか。ファイルの内容でしょうか。
(HTML側のソースが無いので何とも言えませんが、おそらくアップロードはできてないんじゃないかと思います。)

str_replaceは文字列変数の内容を書き換えているだけで、ファイルには一切影響を与えません。
(それがアップロードされたファイルのパスを指していた変数であってもです。)

まずは、マニュアルのサンプルを参考にしてみると良いと思います。

http://php.net/manual/ja/features.file-upload.post-method.php

投稿2016/08/18 13:14

flied_onion

総合スコア2604

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

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

toutou

2016/08/18 13:31

あらためて見たらHTMLのenctypeの部分が抜けていました。 それを入れたら今までファイル名がでてたのがNULLが出たので取得できてないですね。 取得は出来てると思ってたんですがそれすら出来てませんでした。
toutou

2016/08/18 13:46

POSTをFILESに変更したところ  name  type  tmp_name  error  size がvar_dumpででました。たぶんあとはこれを変更するだけです。
flied_onion

2016/08/18 16:00

まずは、リンク先の $FILEの説明と例2をよく読んで。 どう変更するつもりか知りませんが、まず読んでください。 まだいろいろ質問しに来ている段階なので焦ってできると思わず、きちんと調べましょう。それが近道です。 そしてmove_uploaded_file で単純に任意の(Webサーバーが書ける)場所にファイルをコピーできるようになりましょう。 それができたら、move_uploaded_file に渡すコピー先のファイル名を拡張子変更のために工夫すればアップロードは達成できるかと。
toutou

2016/08/18 23:49

すみませんでした。 あとこれだけできればとりあえず完成だと思うので少し気持ちが焦ってました。 少し落ち着きます。
guest

0

自己解決

基本が勉強不足のため質問者に迷惑をかけたのでもうちょっと色々試してみてから質問することにします。

投稿2016/08/18 23:53

toutou

総合スコア2050

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

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

toutou

2016/08/18 23:58

何を言ってるんだ回答者だろ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問