这个文件名是upfile.php。麻烦大家看一下有什么错误或者有什么需要再完善的地方。这是面试官给我的一道程序题。谢了!<HTML>
<HEAD>
<TITLE>文件上傳界面</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT=""><script type="text/javascript" language="javascript">
function chkfm()
{
   var fm=document.SubmitForm;
   if(fm.Upfile.value=="")              //判斷是否已選擇文件
   {
      alert('Please Select the file'); //提示選擇文件
      fm.Upfile.focus();               //聚焦到選擇框
      return false;
   }
 return true;
}
</script></HEAD>
<BODY><?php
/**
 *
 *
 */
if ($_POST)
{
$filepath=$_POST["Upfile"];//取文件路徑
fileRead($filepath);
}
/**
 * 讀取文件并打印出每行前16個字符
 * @param $filepath 文件路徑
 * return
 */
function fileRead($filepath){
$fp=fopen($filepath,'r');
if(!$fp){
throw new Exception("文件無法打開", 1);//文件無法打開時拋出異常
}
else{
$n=0;                       //定義顯示的序列號
while(!feof($fp))           //如果文件結束就結束循環
{
$buffer=fgets($fp,4096);//逐行讀取文件
$buftemp=csubstr($buffer,0,16);
$n++;
echo "$n:".$buftemp."<br>";
}
}
fclose($fp);
}/**
 * 截取字符串$string從$start開始$length個字符
 * @param $string 字符串
 * @param $start 起始位置
 * @param $lengt 字符個數
 * return $str
 */
function csubstr($string,$start,$length)
{
$str="";
$len=$start+$length;
for($i=$start;$i<$len;$i++)
{
if(ord(mb_substr($string,$i,1))>0xa0)//判斷該字符的字節數是否大于1
{
$str.=substr($string,$i,2);//大于則取兩個字節(一個字符)
$i++;
$len++;
}
else
$str.=substr($string,$i,1);//不大于即取一個字節
}
return $str;
}
?><FORM NAME = "SubmitForm" ACTION = "upfile.php" METHOD = "POST"
onsubmit="return chkfm()">
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1" >
選擇要顯示的文件:
<INPUT NAME = "Upfile" TYPE = "file" SIZE = "30" value="$_GET[filepath]"
onkeydown="if(event.keyCode!=8&&event.keyCode!=46)
{if(event.preventDefault) event.preventDefault();
else event.returnValue=false;}"/>
<INPUT NAME = "submit" VALUE = "提交" TYPE = "submit">
<INPUT NAME = "reset" VALUE = "重置" TYPE = "reset">
</FORM>
</BODY>
</HTML>

解决方案 »

  1.   

    這段代碼根本無法執行
    1.文件沒有上傳功能
    2.既然沒有上傳功能那就是打開本地文件,服務器根本無法打開本地文件
    3.PHP對文件的操作功能完成沒有作用
    修改方案:
    1.html改成上傳文件
    <FORM NAME = "SubmitForm" ACTION = "upfile.php" METHOD = "POST" 
    onsubmit="return chkfm()"> 
    改成
    <FORM NAME = "SubmitForm" ACTION = "upfile.php" METHOD = "POST" enctype='multipart/form-data'
    onsubmit="return chkfm()"> 
    2.提交後用上傳函數move_uploaded_file保存到服務器\
    3.進行其它操作
      

  2.   

    不是,我这段代码不是为了上传文件的。只是使用了那个上传的file控件而已,目的是从本地文件里面选择一个文件,然后读取这个文件,把这个文件每行的前16个字符输出出来。就是实现这个功能。
      

  3.   

    不太明白楼上的意思
    这个功能是为了实现读取本地的一个txt文件,将这个文件每行的前16个字符输出到页面。
    我使用file控件是防止手动输入会有路径格式不规范问题。
      

  4.   


    PHP不能直接读取客户端文件,必须先上传。
      

  5.   

    我讀取的只是那個文本框里的文件路徑,然后使用fopen和fgets函數讀取那個路徑的文件的內容。