在php中创建临时文件名

时间:2014-07-22 07:48:30

标签: php jquery

为了用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']

给我一​​个建议

2 个答案:

答案 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

找到