upload1.php コードを更新しない場合のファイル形式と ajax に関する PHP の問題は次のとおりです。
<br /><script type="text/javascript"><br />function checkfile(name){<br /> var xhr;<br /> if(window.XMLHttpRequest){<br /> xhr = new XMLHttpRequest();<br /> }<br /> else xhr = new ActiveXObject("Microsoft.XMLHTTP");<br /><br /> xhr.onreadystatechange=function(){<br /> if(xhr.readyState == "4" && xhr.status == "200"){<br /> document.getElementById("err").innerHTML = xhr.responseText;<br /> }<br /> }<br /><br /> xhr.open("POST","result.php",true);<br /> xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");<br /> xhr.send("name=" + name);<br />}<br /></script><br /><form enctype="multipart/form-data" method="post" action="upload2.php"><br /> <input type="hidden" name="MAX_FILE_SIZE" value="10000" /><br /> 上传文件:<input type="file" name="filename" onchange="checkfile(this.value)" /><br /><br /> <input type="submit" value="上传" /><br /><br /> <br /> <p id="err"></p><br /></form><br />
ログイン後にコピー
ここで、ファイル内の onchange をイベントとして使用し、選択したファイル名を checkfile() に渡します。
result.php コードは次のとおりです。
<br /><?php<br /><br /> $filepath = $_POST["name"]; <br /> $err = "";<br /> if(filesize($filepath) > 10000) $err = "文件不得超过10kb!";<br /> <br /> echo $err;<br /><br />?><br />
ログイン後にコピー
実行結果には警告が表示されます。
取得した $_POST["name"] エコーを確かに「E:\Album\Pictures\Wallpaper\Others\2.jpg」として表示しましたが、そうではありませんUpload1 のような感じです。php での値の受け渡しに問題があります。
次に、ファイルサイズをテストするために新しいファイル (「E:\Album\Pictures\Wallpaper\Others\2.jpg」) を作成しました。エコーが出ると、ページには 109739 と表示されましたが、問題ありませんでした。
では、何が問題だったのでしょうか?
------解決策---------filesize はローカル ファイルのサイズのみを返すことができます
------解決策---------まず、クライアントとサーバーを理解してください。
filesize はサーバー上のファイル サイズのみを取得できます。
冒頭の投稿の名前とパスはクライアント上の画像であり、サーバーに保存されていないため、ファイルサイズを取得できません。
そして if(filesize("E:\Album\Picture\Wallpaper\Other\2.jpg")>10000) と書きましたが、これはサーバー ファイルを直接読み取るのと同等ですが、もちろん問題ありません。