PHPとSmartyを使って、データベースにファイルをアップロードするプログラムを作ったのですが、実行すると
Warning: fread(): supplied argument is not a valid stream resource in line 147
Warning: fclose(): supplied argument is not a valid stream resource in line 148
というエラーが表示されます。
データ以外の情報はデータベースに格納されるのですが、アップロードしたファイルデータは格納されません。
何故なのか分からないので、教えていただければ幸いです。
ちなみに作成環境は以下のとおりです。
Apache/2.0.59 (Win32) PHP/5.2.3
MySQL クライアントのバージョン: 5.0.37
//*Smartyのプログラムソース*//
function screen_submit_report($param) {
global $smarty;
if (!get_report($param)) {
exit();
}
$re_name = $_POST["re_name"];
$seito_id = $_POST["SEITO_ID"];
$ka_id = $_POST["KA_ID"];
$fp = fopen($_FILES["uploadfile"]["tmp_name"], "rb");
$filedat = fread($fp, filesize($_FILES["uploadfile"]["tmp_name"]));
fclose($fp);//147行目
$filedat = addslashes($filedat);//148行目
$conn = db_conn();
$sql = "INSERT INTO report (seito_id, re_name, data, ka_id) values ('$seito_id', '$re_name', '$filedat', '$ka_id')";
$res = db_query($sql, $conn) or die("データ抽出エラー".mysql_error());
if ($res) {
$page["message_header"] = "追加が完了しました。";
}
else {
$page["message_header"] = "追加が失敗しました。" . mysql_error();
}
$page["name"] = "アップロード完了";
$page["act"] = "";
$page["button_value"] = "";
$smarty->assign("page", $page);
$smarty->assign("message", $message);
// テンプレートを表示
$smarty->display("submit_report.tpl");
}
//*関係するデータベース*//
mysql> describe report;
+--------+------------+----+---+-------+--------------+
|Field |Type |Null|Key|Default|Extra |
+--------+------------+----+---+-------+--------------+
|re_no |smallint(6) |NO |PRI|NULL |auto_increment|
|seito_id|mediumint(9)|YES | |NULL | |
|re_name |varchar(200)|YES | |NULL | |
|data |blob |YES | |NULL | |
|ka_id |smallint(6) |YES | |NULL | |
+--------+------------+----+---+-------+--------------+
No.1ベストアンサー
- 回答日時:
fread() と fclose() が問題ということは fopen() が失敗しているのだと。
$_FILES を確認してみてください。
enctype="multipart/form-data" が抜けているとか?
回答ありがとうございます!
ずっとインターネットに接続できず、お礼が遅くなってしまってすみません。
ご指摘通り、multipartの問題でした。
PHPにとらわれて、フォームをちゃんと確認していませんでした。
この記述を加えることで、無事にアップロードできました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Fortranでのファイル名操作につ...
-
重複を防ぐ記述について教えて...
-
Flaskでサーバー立ち上げに関して
-
phpでショッピングカート機能を...
-
PHPで入力フォームでデータを確...
-
chmod 教えてください
-
PHPとHTML+Xamppの掲示板で画像...
-
プルダウンとCSVの連動
-
PHPでURLにジャンプするには?
-
アマゾンのような評価の星を選...
-
POSTを使わずに値を渡す方法
-
CodeIgniter/set_value()
-
<input type="hidden" >で配列...
-
フォームボタンを押すたびに数...
-
PHP ボタンが押されたら処理を...
-
入力した部分を表示させたまま...
-
POSTデータのNAME属性をVALUEに...
-
ブックマークレットで他ドメイ...
-
チェックボックスによる検索
-
PHP で画面の一部だけを変えたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flaskでサーバー立ち上げに関して
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
phpで変数を使ってcopyできない
-
PHPで入力フォームでデータを確...
-
PHPからHTMLへの変数の受け...
-
POSTの項目に追加
-
PHP MySql 画像を取得
-
MySQL,PHPのリロードによる二重...
-
UPDATEできない
-
ファイル名を変更してアップロ...
-
php、sqlite3にデーター追加で...
-
openCVのトラックバーについて
-
複数条件での検索について教え...
-
PHP5でsimple_xml_load_fileす...
-
PHPのリロード時の処理
-
連想配列を複数条件で比較して...
-
PDOのprepareでLIKEの部分一致...
-
POSTされない
-
アップロードしたファイルの絶...
おすすめ情報