通过action属性使用动态URL上传PHP。

时间:2014-11-14 19:26:58

标签: javascript php matlab upload action

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

以下是我用来更改网址的脚本,但文件没有上传。

HTML代码:

<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>";
    ?>   

请你告诉我我做错了什么。

期待您的回复。

谢谢和最诚挚的问候, Shivam Dixit

1 个答案:

答案 0 :(得分:0)

你的'回归虚假;'阻止提交表单,然后不上传文件。您只是将用户移动到另一个地址。

而不是

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

尝试将表单操作设置为您想要的网址:

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

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