为了用PHP保存文档/图像,我正在使用move_uploaded_file($tmp, "location")
。
我在文件更改时获取文档/图片的值,因此我获得了文件名,但我无法创建tmp_name
,因为我得到了name
以下列方式:
HTML:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="upload" onChange="change(this.value)" />
<input type="submit" name="chk" value="Submit" />
<div id="div"></div>
</form>
JavaScript的:
<script src="js/jquery1.js"></script>
<script>
function change(val){
$.ajax({
url:"filecheck.php?id=" + val,
success:function(res){
alert(res);
}
});
}
PHP: filecheck.php
mysql_connect("localhost","root","");
mysql_select_db("newdatabase");
if(isset($_GET['id']))
{
$name=$_GET['id'];
$tmp=$_GET['id']['tmp_name']; //here i need temp file name
move_uploaded_file($tmp, "C:/xampp/htdocs/jerome/project/newimage/".$name);
echo $name;
}
如果我按$_FILES['file']['name']
获取文件名,则表示我可以获得$_FILES['file']['tmp_name']
,但我无法通过这种方式获取。你能否就如何获得$_FILES['file']['tmp_name']
?
答案 0 :(得分:1)
您的问题是,您尝试从$_GET
超全局而不是$_FILES
超级全局访问该文件。
使用以下代码进行简单检查将显示文件数据:
print_r($_FILES);
您的ajax也存在问题。
function change(val){
$.ajax({
url:"filecheck.php?id=" + val,
type: "post",
data: $('#yourformid').serialize()
success:function(res){
alert(res);
}
});
}
我可以看到你正试图通过ajax进行即时上传。你现在这样做的方式很糟糕。
您应该查看以下教程,以了解应该如何完成:
否则你只需要检查:
if(!empty($_FILES)) {
$name = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
}
注意强>
请查看code-jaffs comment
验证我的观点,说明您的文件不会按照您目前的方式上传。
答案 1 :(得分:0)
问题在于$tmp=$_GET['id']['tmp_name'];
..这应该改为$tmp=$_FILES['file']['tmp_name'];
,因为代码jaff说..
get的用法可以在http://php.net/manual/en/reserved.variables.get.php
找到