在一个php文件中我创建了一种上传形式,并通过ajax调用另一个php来上传照片。我将name =“file”传递给第二个php,这意味着我有一个字符串是照片的路径和名称(“C:\ fakepath \ xxx.JPG”),然后我把这个字符串放在一个变量中,如下所示: / p>
$ file =“在第一个php中从上传表单中提交的字符串”;
然后,$_FILES["$file"]
或$_FILES[$file]
或$_FILES['$file']
,总是给我一个错误,如:
Notice: Undefined index: C:\fakepath\xxx.JPG in C:\xampp\htdocs\project\ajax_php_files\PHPfile.php on line 111
上传表格(第一个PHP)
echo"
<form action='#' method='post' enctype='multipart/form-data' name='form1' id='form1'>
<label for='file'>Filename:</label>
<input type='file' name='file' id='file'><br>
<input name='submit' type='button' id='submit' value='upload' onclick=\"SubmitData1('file')\" />
</form>";
ajax功能:
function SubmitData1(id1){
var file=document.getElementById(id1).value;
//var file=String(file);
alert(file);
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ContextPart").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_php_files/upload_file3.php?file="+file,true);
xmlhttp.send();
}
第二个php(upload_file3.php):
<?php
//$allowedExts = array("jpg", "jpeg", "gif", "png");
//$extension = end(explode(".", $_FILES["file"]["name"]));
$file=$_GET["file"];
// here, the variable $file is a string like:C:\fakepath\fit1.JPG
//$file="C:\Picture\Amir\fit1.JPG";
echo $file;
if ((($_FILES["file (or $file or '$file' or what?!!)"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 10000000))
//&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
等...
任何帮助?
答案 0 :(得分:1)
因此,问题是$_FILE
数组的索引与表单中文件输入的name
有关。在这种情况下,您正在寻找$_FILE['file']
。
另一个问题是您尝试使用AJAX和GET
上传文件。这根本行不通。文件上传必须是POST,并且不会单方面支持AJAX中的文件上传。如果你只是在GET中使用表单元素的值,那么它总是类似于C:\fakepath\xxx.JPG
。
答案 1 :(得分:0)
((($_FILES["fit1"]["type"] == "image/gif")
上的发现拼写错误应为$_FILES["file"]