PHP 上传,按操作属性提供动态网址

PHP upload with dynamic url by action attribute.

本文关键字:动态 属性 上传 操作 PHP      更新时间:2023-09-26

我正在尝试使用 php 将 matlab 文件上传到我的服务器上。我需要将此文件作为 php url 的一部分传递,以便我可以从 url 中取出此文件并将其传递给自定义 shell 脚本中的一些代码。

这是我用来更改 URL 的脚本,但文件没有上传。

网页代码:

<script type="text/javascript">
 window.onload = function(){
    var form = document.getElementById("phpForm");
    form.onsubmit = function(){
      var matlabfile = document.getElementById("fileToUpload");
      var filename = matlabfile.value;
      var filename2=filename.replace(/^.*''/, "");
      var filename3=filename2.substr(0, filename2.lastIndexOf('.'));
      window.location = "upload.php?matlabfile=" + filename3
      return false;
    };          
 };
</script>
                            <form action="" id="phpForm" method="post"
                            name="phpForm" enctype="multipart/form-data>
                                <table style=" text-align:center;">
                                    <tr>
                                        <td><b>File 1:</b> <input id=
                                        "fileToUpload" name="fileToUpload"
                                        type="file"></td>
                                    </tr>
                                    <tr>
                                        <td><input name="submit" type=
                                        "submit" value=
                                        "Upload Script"></td>
                                    </tr>
                                </table>
                            </form>

PHP代码:

<?php
    $targetfolder = "";
    $targetfolder = $targetfolder . basename( $_FILES['fileToUpload']['name']) ;
    if(move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $targetfolder)) {
    echo "The file ". basename( $_FILES['fileToUpload']['name']). " is uploaded";
    } 
    else {
           echo "Problem uploading file";
    }
    $var1=$_GET['matlabfile'];
    echo "<pre>$var1</pre>";
    echo "matlabfile : ".$_GET['matlabfile']."<br>";
    $output = shell_exec("./n.sh $var1 2>&1");
    echo "<pre>$output</pre>";
    ?>   

你能告诉我我做错了什么吗?

期待您的回复。

感谢和最好的问候,希瓦姆·迪克西特

您的"return false;"阻止提交表单,然后文件未上传。您只需将用户移动到另一个地址即可。

而不是

window.location = "upload.php?matlabfile=" + filename3;
return false;

尝试将表单操作设置为所需的 URL:

form.setAttribute('action', "upload.php?matlabfile=" + filename3);

然后,用户将被发送到您想要的页面,文件将被上传:)