如果我无法获取输入文件该怎么办:
<input type="file" name="upload" id="upload">
选择要上传的文件后,输入字段将消失。 相反,它将显示绝对路径:
C:\users\foo\Desktop\file.zip
C:\fakepath\file.zip
这是我用来获取绝对路径的代码:
<script>
$('#upload').on('change',function(){
var filename = document.getElementById("filename").innerHTML;
$.ajax({
type: "POST",
url: "execs/upload.php",
data: { filename: filename},
dataType: "json",
success: function (data) {
alert ("Success")
},
error: function () {
alert ("Failed")
}
});
})
</script>
我还能用PHP上传吗?我上网的大部分内容是我需要$ _FILES [&#39;文件名&#39;] [&#39; tmp_name&#39;]。如果我只有绝对路径,我不知道如何获得它。
这是upload.php文件:
<?php
$filename = $_POST["filename"]; //C:\users\foo\Desktop\file.zip
$target_dir = "uploads/";
$target_file = $target_dir . $filename;
if(move_uploaded_file($filename, $target_file)){ // $target_file = uploads/file.zip
echo "yes";
}
else echo "no";
?>
当我还检查文件是否存在($ filename)时,它表示不存在。
非常感谢任何帮助!非常感谢!
答案 0 :(得分:0)
您不应使用$_POST[]
作为文件输入,而是使用$_FILES[]
。
有关详细信息,请查看此tutorial。
答案 1 :(得分:0)
请参阅这篇文章: How to get file name from full path with PHP?
有两种方法:
我更喜欢pathinfo。
<?php
$xmlFile = pathinfo('/usr/admin/config/test.xml');
function filePathParts($arg1) {
echo $arg1['dirname'], "\n";
echo $arg1['basename'], "\n";
echo $arg1['extension'], "\n";
echo $arg1['filename'], "\n";
}
filePathParts($xmlFile);
?>
这将返回:
的/ usr /管理/配置
的test.xml
XML
测试
<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>
答案 2 :(得分:0)
而不是$_FILES
使用$filename = $_FILES["upload"];
print_r($filename);
作为
MQTTConnectOptions opts = new MQTTConnectOptions();
opts.setConnectionTimeout(240000);
client.connect(opts);
答案 3 :(得分:0)
<?php
$uploaddir = "/www/uploads/";
$uploadfile = $uploaddir . basename($_FILES['upload']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['upload']['tmp_name'], $uploadfile)) {
echo "Success.\n";
} else {
echo "Failure.\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
答案 4 :(得分:-2)
您有$filename = $_POST["filename"];
,但将其更改为:
$filename = $_POST["upload"];
因为你有:
<input type="file" name="upload" id="upload">
So: name="upload"