为了在 PHP 中保存文档/图像,我使用 move_uploaded_file($tmp, "location")
。
我在文件更改时获取文档/图像的值,因此我获取了文件名,但无法创建 tmp_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 进行即时上传。你现在的做法很糟糕。
您应该查看以下教程以了解应该如何完成:
否则你只需这样检查:
if(!empty($_FILES)) {
$name = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
}
<小时/>
注意
看看code-jaffs comment
这验证了我上面的观点,即您的文件不会按照您当前的方式上传。
关于php - 在php中创建临时文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24881624/