私はhtmlとphpを使用してWebベースのシステムを作成しています。機能の1つは、学生がファイルをデータベースにアップロードできるようにすることです。実際には3つのファイルです。ファイル タイプの入力フィールドを作成しました。PHP は正しいと確信していますが、理解できない警告が表示され、クエリが機能しないことがあります。しかし、これは常に起こるとは限りません..通常はそうではありません..
HTML のフィールドの 1 つを次に示します。
<tr><td> <p><span>C.V: </span> </td><td> <input class="contact" type="file" id ="CV" name="CV" value="" required /></p> </td></tr>
そしてここにPHPがあります
//check for CV
if ($_FILES["CV"]["size"] > 0)
{
$fileName = $_FILES['CV']['name'];
$tmpName = $_FILES['CV']['tmp_name'];
$fileSize = $_FILES['CV']['size'];
$fileType = $_FILES['CV']['type'];
//check if larger than 1M
if($fileSize > 1048576) {echo "<p style='color: red;'> Cannot upload <b>CV</b> due to large size. File must be less than 1MB </br> </p>"; $complete= false;}
//check if .PDF ( I need it to be PDF always)
else if($fileType != "application/pdf")
{
echo "<p style='color: red;'> Cannot upload <b>CV</b> file type must be a .PDF only </br> </p>"; $complete= false;}
//everything is fine:
else{
$fp = fopen($tmpName, 'r');
$CV = fread($fp, filesize($tmpName));
$CV = addslashes($CV);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
echo "<br>CV: File $fileName uploaded with type $fileType and size $fileSize <br>";
}
}
SQL クエリ:
$qry=" UPDATE student SET CV = '$CV', Transcript='$tran',IELTScertificate='$EC', Status ='$stat' WHERE KSUID ='$KSUID'";
警告:
警告: mysql_query(): MySQL サーバーがなくなりました... 330 行目
警告: mysql_query(): 結果セットのヘッダーの読み取り中にエラーが発生しました... 330 行目
330. $result=mysql_query($qry);
アップロードされたファイルにテーブルを使用しなかったデータベースでは、コンテンツのみが必要ですが、常にpdfになるためタイプは気にしません。保存されている限り、名前は気にしません右の列に。
これが問題かどうかわかりませんか?しかし、サイズの異なる他のファイルが正常にアップロードされなかったファイルが正常にアップロードされたため、そうは思いません。
ファイルを取得する際に直面している別の問題..ファイルをダウンロードすると.pdfファイルとして正しく取得されますが、開くとファイルが破損していると表示されます..理由はわかりませんか? ローカルサーバーを使用しているためでしょうか?私はそうは思いませんが、理解するのに疲れています:(誰かが以前にそのような問題に直面した場合、またはこの問題を解決する方法を知っている場合は、私を助けてください
HTML :
<a href='updatestudentlist.php?id=".$ksuid."&file=00'>CV</a> <br/>
PHP:
if(isset($_GET['file'])){
$file=intval($_GET['file']);
if($file==00) //I use this cause other files got different numbers
{
$query = "SELECT CV FROM student WHERE KSUID='".$_GET['id']."'";
$result = mysql_query($query) or die('Error, query failed');
list($content) = mysql_fetch_array($result);
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=".$_GET['id']."_CV");
echo $content;
exit;
}
}