亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP上傳文件信息獲取問題

PHP上傳文件信息獲取問題

高山彝人 2017-11-09 09:00:56
? ? ? ? 最近在學PHP,從最基礎的一些基本操作在學起。今天正好學到文件上傳,于是自己寫了一個文件上傳的表單,想要實現上傳一張圖片的功能,可是今天在PHP腳本當中獲取上傳文件信息時卻遇到了一些問題,查了百度也沒解決,麻煩大家幫看一下。????????環境:win10 + apache2.4+php5.7????????PHP腳本關鍵部分代碼:(完整代碼見最后)? ? ?HTML頁面顯示:????????????可以發現,第一點,echo語句輸出is_file的值為空,而var_dump輸出is_file函數的值卻不為空,這是為什么?而且這兒居然是false?????????第二點,echo輸出文件大小卻提示文件狀態有問題?這是什么原因?????????第三點,echo和var_dump有什么區別嗎?????????哪位朋友能幫忙解答一下?????????????????????? ?完整代碼:????????? ?<!DOCTYPE html><html>? <head>? ? <meta charset="utf-8">? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">? ? <meta name="viewport" content="width=device-width, initial-scale=1">? ? <title>添加分數</title>? ? <!-- Bootstrap -->? ? <link href="css/bootstrap.css" rel="stylesheet">? </head>? <body>? <div><div>? ? <div><?php//如果表單已經提交if(isset($_POST['submit'])){$bdc = mysqli_connect('localhost','root','','elvis_store') or die('數據庫連接失敗');? ? $username = $_POST['username'];? ? $score = $_POST['score'];? ? $screenshoot=$_FILES['screenshoot']['name'];//獲取上傳圖片的文件名? ? if(!empty($username) && !empty($score) && !empty($screenshoot)){? ? ?$isFile=is_file($_FILES['screenshoot']['name']);? ? ?echo '上傳文件返回結果代碼:'.$_FILES['screenshoot']['error'].'<br />';? ? ?echo '臨時文件路徑:'.$_FILES['screenshoot']['tmp_name'].'<br />';? ? ?echo 'echo輸出是否是文件:'.(is_file($_FILES['screenshoot']['name'])).'<br />';? ? ?var_dump(is_file($_FILES['screenshoot']['name'])) . "<br />";? ? ?echo 'filesize輸出文件大小:'.(filesize($screenshoot)/1024).'kb<br />';? ? ?echo '文件大小:'.($_FILES['screenshoot']['size']/1024).'kb<br />';? ? ?echo '文件名稱:'.$_FILES['screenshoot']['name'].'<br />';? ? ?echo '文件類型:'.$_FILES['screenshoot']['type'].'<br />';? ? ?if(is_file($screenshoot) && /*$_FILES['screenshoot']['size']>0或者*/ filesize($screenshoot)>0){? ? ? $query = "INSERT INTO score_list (id,name,score,date,screenshoot) VALUES (0,'$username',now(),'$score','$screenshoot')";? ? $result = mysqli_query($query) or die('數據庫數據添加失敗');? ? echo '<h2>數據添加成功</h2>';? ? }? ? else? ? echo "只能上傳圖片類型并且圖片大小不能大于";? ? }? ? else? ? echo "請填寫完所有表單信息再提交!";}?>? ? <h4>添加我的分數</h4><form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">? <!--利用HTML5創建一個文件上傳大小限制,最大為10MB-->? <input type="hidden" name="MAX_FILE_SIZE" value="10240000">? <div>? ? <label for="username">姓名</label>? ? <input type="text" id="username" placeholder="姓名" name="username" value="<?php if(isset($username)) echo $username; ?>">? </div>? <div>? ? <label for="score">分數</label>? ? <input type="text" id="score" placeholder="分數" name="score" value="<?php if(isset($score)) echo $score; ?>">? </div>? <div>? ? <label for="screenshoot">分數截圖上傳</label>? ? <input type="file" id="screenshoot" name="screenshoot">? </div>? <input type="submit" name="submit" class="btn btn-info" value="提交"></form></div><div >? ? ?<a href="./list_scores.php" class="btn btn-success">返回高分列表</a>? ? </div></div>? ? <script src="./js/jquery-3.2.1.js"></script>? ? <script src="./js/bootstrap.js"></script>? </body></html>
查看完整描述

2 回答

已采納
?
捷克軒

TA貢獻60條經驗 獲得超21個贊

第一個問題 echo 打印false 就是在頁面里什么顯示不出來,var_dump可以具體詳細信息。第二個問題is_file是讓你判斷他是不是個文件,你確定$_FILES['screenshoot']['name']這是個文件?還是一個路徑?既然他是判斷是不是個文件,那你傳的參數應該是路徑對+文件名 第三個問題 echo是語言結構他可以打印出PHP的簡單數據類型 int float bool? 復合類型就沒辦法了,object array只能用var_dump或者print_r明白了

查看完整回答
1 反對 回復 2017-11-16
  • 高山彝人
    高山彝人
    非常感謝,現在回過頭來再看已經弄清楚了。 最后,我的PHP代碼變成了這樣: /*利用$_FILES全局變量來獲取文件的有關信息*/ echo '上傳文件返回結果代碼:'.$_FILES['screenshoot']['error'].'<br />'; echo '臨時文件路徑:'.$_FILES['screenshoot']['tmp_name'].'<br />'; echo 'echo輸出文件大小:'.($_FILES['screenshoot']['size']/1024).'kb<br />'; echo '文件名稱:'.$_FILES['screenshoot']['name'].'<br />'; echo '文件類型:'.$_FILES['screenshoot']['type'].'<br /><br /><br />'; /*利用函數獲取文件的相關信息*/ $pathString=$_FILES['screenshoot']['tmp_name']; echo '文件路徑是:'.$pathString.'<br />'; echo 'echo輸出是否是文件:'.(is_file($pathString)).'<br />'; var_dump(is_file($pathString)) . '<br />'; echo 'filesize輸出文件大小:'.(filesize($pathString)/1024).'kb<br />'; var_dump(filesize($pathString)/1024) . 'kb<br />';
?
高山彝人

TA貢獻1條經驗 獲得超0個贊

/*利用$_FILES全局變量來獲取文件的有關信息*/

? ? echo '上傳文件返回結果代碼:'.$_FILES['screenshoot']['error'].'<br />';

? ? echo '臨時文件路徑:'.$_FILES['screenshoot']['tmp_name'].'<br />';

? ? echo 'echo輸出文件大小:'.($_FILES['screenshoot']['size']/1024).'kb<br />';

? ? echo '文件名稱:'.$_FILES['screenshoot']['name'].'<br />';

? ? echo '文件類型:'.$_FILES['screenshoot']['type'].'<br /><br /><br />';


? ? /*利用函數獲取文件的相關信息*/

? ? $pathString=$_FILES['screenshoot']['tmp_name'];

? ? echo '文件路徑是:'.$pathString.'<br />';

? ? echo 'echo輸出是否是文件:'.(is_file($pathString)).'<br />';

? ? var_dump(is_file($pathString)) . '<br />';

? ? echo 'filesize輸出文件大小:'.(filesize($pathString)/1024).'kb<br />';

? ? var_dump(filesize($pathString)/1024) . 'kb<br />';



查看完整回答
反對 回復 2017-11-23
  • 2 回答
  • 0 關注
  • 2565 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號