如果我只有绝对路径,我可以使用PHP上传文件吗?

时间:2015-08-03 08:25:47

标签: javascript php jquery

如果我无法获取输入文件该怎么办:

<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)时,它表示不存在。

非常感谢任何帮助!非常感谢!

5 个答案:

答案 0 :(得分:0)

您不应使用$_POST[]作为文件输入,而是使用$_FILES[]

有关详细信息,请查看此tutorial

答案 1 :(得分:0)

请参阅这篇文章: How to get file name from full path with PHP?

有两种方法:

  1. 使用pathinfo。
  2. 使用basename。
  3. 我更喜欢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"