我有一个表单(HTML,PHP),允许最终用户上传文件以使用上传文件中的记录(特别是.csv)更新数据库(MySQL)。但是,在phpscript中,我只能获取文件名而不是指定文件的完整路径。由于这个原因,fopen()失败了。谁能告诉我如何才能找到完整的路径?
HTML代码:
<html>
<head>
</head>
<body>
<form method="POST" action="upload.php" enctype="multipart/form-data">
<p>File to upload : <input type ="file" name = "UploadFileName"></p><br />
<input type = "submit" name = "Submit" value = "Press THIS to upload">
</form>
</body>
</html>
PHP脚本:
<?php
.....
......
$handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory
?>
答案 0 :(得分:27)
name
是指客户端上的文件名。要获取服务器端上的文件名(包括完整路径),您需要使用tmp_name
:
$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');
答案 1 :(得分:3)
$target='uploads/'.basename($_FILES['UploadFileName']['name']);
if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) {
//Insert into your db
$fp = fopen($target, "r");
}
答案 2 :(得分:2)
使用以下代码
$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');
答案 3 :(得分:2)
$filePath = realpath($_FILES["file"]["tmp_name"]);
这给了我PHP中上传文件的完整路径。如果在文件下载中发现0字节问题,只需像这样修改此内容长度行
header("Content-Length: ".filesize($filePath));
其中$ filePath应该是文件的绝对路径,而不仅仅是文件句柄。
答案 4 :(得分:1)
我这样用......
<?php
$NameOriginal = $_FILES["UploadFileName"]['name'];
$Typo_Image = $_FILES["UploadFileName"]['type'];
$name_Temp = $_FILES["UploadFileName"]['tmp_name'];
?>