在php中创建临时文件名


create temp file name in php

为了在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']的建议吗

您的问题是您试图从$_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。你现在做这件事的方式是不好的。

你应该看看下面的教程,以掌握应该如何做的理解:

  • 通过php/ajax上传
  • 通过ajax在PHP中上传文件
  • Google搜索"php/ajax文件上传"

否则你就像这样检查:

if(!empty($_FILES)) {
    $name = $_FILES['file']['name'];
    $tmp = $_FILES['file']['tmp_name'];
}

注意

查看 code-jaffs comment ,它验证了我上面的观点,即您的文件不会以当前的方式上传。

问题是$tmp=$_GET['id']['tmp_name']; ..这应该更改为$tmp=$_FILES['file']['tmp_name'];,如code-jaff所说…

get的用法可以在这里找到http://php.net/manual/en/reserved.variables.get.php