ホームページ  >  記事  >  php教程  >  php mysqlを使用してファイルを保存および出力する方法

php mysqlを使用してファイルを保存および出力する方法

WBOY
WBOYオリジナル
2016-06-13 12:42:151136ブラウズ

ローカル ファイルがサーバーにアップロードされた後、サーバー スクリプトはファイルをマシンの特定のディレクトリに
ファイルとして保存する方法が一般的です。ファイル名が重複すると、一部のプログラムはファイル名の一意性を確保するために、ファイル名を自動的に変更し、ファイル名にアップロード時刻を追加するため、ファイルの元の名前が失われます。ファイル情報には多くの困難があり、ファイルを一元的に管理することは困難です。その 1 つは、ファイルをデータベースに保存し、データベースの強力な機能を使用してさまざまな操作を簡単に実行することです。ファイル。この記事では 2 番目の方法
を使用します。

この一連のプログラムは、Web ページを通じてハードディスクからサーバーのデータベースにファイルをアップロードし、
がファイルの内容を読み取る方法を示します。

使用手順:
プログラムは全部で 5 つあり、その手順は次のとおりです:
1. file.sql --- このプログラムで使用するデータベース テーブルの構造[注: 使用するデータベースは test ]
2. Upload.php --- フォームをアップロード
3. submit.php --- ハンドラーをアップロード
4. show_info.php ---アップロードされたファイル情報
5. show_add.php --- [ダウンロード] ファイルを表示

//////////////////////// ///////// /////////////////////////////////////
(1) file.sql ---
//簡単な説明
アップロードされたファイルの基本情報を保存するデータベース構造 ここで、ファイルの内容を保存するフィールドに注目してください。
通常の BLOB タイプは最大 64K バイトを保存できるためです。また、一般に、PHP のデフォルト設定ではアップロード ファイルの最大サイズは 2M です。アップロードされるファイルが特に大きい場合は、php.ini の設定を調整することを忘れないでください。
//ファイルソースコード
create table accept(
id int NOT NULL auto_increment, #主キー, 自動蓄積
file_data longblob, 🎜> file_name varchar(255), #文件名文字
file_size int, #文件大小
主キー(id) #主键
)

////////// ////////////// /////////////////////////////////////////////////
(2) Upload.php ---
//簡単な説明
アップロード インターフェイス、ユーザーはファイルを選択し、それを処理のために submit.php に送信します
価値があります。 MAX_FILE_SIZE の隠し値フィールドの VALUE を設定することで、アップロードされるファイルのサイズを
制限できます。
//プログラムソースコード

ファイルアップロードフォーム<br></head> table><br><form enctype='multipart/form-data' name='myform' action='submit.php' <br>method='post'> INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000"> <br><tr><td>アップロード ファイルを選択</td><td> <br><input name=' myfile' type='file' ></td></tr> <br><tr><tdcolspan='2'><input name="submit" value="Upload">type='submit' ></td><br></table><br></body> ////////// /////////////////////////////// ////////////////// // <br>(3) submit.php --- <br>//簡単な説明<br>ユーザーがアップロードしたファイルを、ファイルの基本情報とともに置きます その情報はデータベースに保存されます <br>/ /プログラムソースコード<br>&lt;?php<br>if($ myfile!= "none" && $ myfile!= ""){//アップロードされたファイル<br><br> /コンテンツを文字列に変換 <br> $fp=fopen($myfile, "rb"); <br> if(!$fp) die("ファイル オープン エラー"); <br> $file_data =addslashes (fread($fp) , filesize($myfile))); <br> fclose($fp); <br><br> // ファイル形式、名前、サイズ<br> 🎜> $file_name=$myfile_name; <br> $file_size=$myfile_size; <br><br> //データベースに接続し、ファイルをデータベースに保存します <br> $conn=mysql_connect("127.0 .0.1", "***","***"); <br> if(!$conn) die("エラー: mysql 接続に失敗しました"); <br> mysql_select_db("test",$conn); 🎜> $sql="受信に挿入 <br> (file_data,file_type,file_name,file_size) <br> 値 ('$file_data','$file_type','$file_name',$file_size)"; > $result=mysql_query($sql); <br><br> //次の文は今挿入したステートメントの ID を取り出します <br> $id=mysql_insert_id() <br><br> mysql_close ($ conn); <br><br> set_time_limit(30); // デフォルトのタイムアウト設定を復元します <br><br> echo "<a href='show_info.php ?id=$id'>アップロードされたファイル情報を表示</a>"; <br> } <br> else { <br> echo "ファイルはアップロードされていません"; <br> } <br>?> <br><br>////////////////////////////////////////// // /////////////////////////// <br> (4) show_info.php --- <br>//簡単な説明 <br> データベースからファイルの基本情報[ファイル名とファイルサイズ]を取得します。<br>//プログラムソースコード<br><?php /位置情報の記録、読み出し <br> $conn=mysql_connect(" 127.0.0.1","***","***"); <br> if(!$conn) die("error: mysql connect failed "); <br> mysql_select_db("test",$conn); <br><br> $sql = "select file_name,file_size from accept where id= $id"; <br> $result = mysql_query($sql) ; <br> if(!$result) die(" error: mysql query"); <br><br> //指定されたレコードがない場合、エラーが報告されます <br> $num=mysql_num_rows($result); <br> if($num<1) die("error: no this Recorder"); <br><br> //次の 2 つのプログラム次のように書くこともできます<br> //$row=mysql_fetch_object($result); <br> //$name=$row->name; <br> //$size=$row->size; <br> $name = mysql_result($result,0,"file_name"); <br> $size = mysql_result($result,0,"file_size"); <br><br> mysql_close($conn); ><br> echo "<hr>アップロードされたファイル情報:"; <br> echo "<br>ファイルの名前 - $name"; <br> echo "<br>ファイルのサイズ - $size"; <br> echo "<br><a href=show_add.php?id =$id>添付ファイル</a>"; <br><br>//////// ///////////////////////////////////////////////// /////////////// <br> (5) show_add.php --- <br>//簡単な説明<br>データベースからファイルの内容を取得します<br>//プログラムソースコード<br><?php ==="") die("error: id none"); <br><br> //レコードを見つけて読み出します<br> $conn=mysql_connect("127.0. 0.1","***","* **"); <br> if(!$conn) die("エラー: mysql 接続に失敗しました"); <br> mysql_select_db("test",$conn); <br> $sql = "select * from accept where id=$id"; <br> $result = mysql_query($sql); <br> if(!$result) die("error: mysql query"); ><br> $num=mysql_num_rows($result ); <br> if($num<1) die("エラー: このレコーダーはありません"); <br><br> $data = mysql_result($result,0, "ファイルデータ"); <br> $type = mysql_result($result,0,"file_type"); <br> $name = mysql_result($result,0,"file_name"); conn); <br><br> // まず、対応するファイルヘッダを出力し、元のファイル名を復元します。 <br> header("Content-type:$type"); <br> header("Content-Disposition:attachment; filename=$name"); <br> echo $data; <br>?> <br><br>このプログラムは、win2000 pro apache 1.13.19 php 4.0.5 mysql 3.23.36 で合格しました。​ <br></p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="メッセージ連続送信の完全な例" href="https://m.php.cn/ja/faq/212169.html">メッセージ連続送信の完全な例</a></span><span>次の記事:<a class="dBlack" title="メッセージ連続送信の完全な例" href="https://m.php.cn/ja/faq/212187.html">メッセージ連続送信の完全な例</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/92233.html" title="Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn" class="aBlack">Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/97151.html" title="程序猿ProMonkey V2.03" class="aBlack">程序猿ProMonkey V2.03</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/94770.html" title="PHP Navigator" class="aBlack">PHP Navigator</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/90182.html" title="php返回数组中指定的一列(php5.5.0默认函数array_column()在php" class="aBlack">php返回数组中指定的一列(php5.5.0默认函数array_column()在php</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/208396.html" title="htmlentitiesとhtmlspecialcharsの違いの詳しい説明" class="aBlack">htmlentitiesとhtmlspecialcharsの違いの詳しい説明</a><div class="clear"></div></li></ul></div></div><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>