【问题标题】:PHP upload with dynamic url by action attribute.PHP 通过 action 属性上传动态 url。
【发布时间】:2014-11-14 19:26:57
【问题描述】:

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

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

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

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

期待您的回复。

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

【问题讨论】:

  • $_GET['matlabfile'] 它是什么?你在哪里把输入放在表单中
  • 您可能无法执行此操作。 URL 参数长度是有限制的,而且它们似乎可能小于您文件的内容。使用 POST。
  • @Indra:我从脚本的第一部分收到错误,即上传文件。

标签: javascript php matlab upload action


【解决方案1】:

你的'return false;'正在阻止提交表单,然后文件没有上传。您只是将用户移动到另一个地址。

代替

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

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

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

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

【讨论】:

  • 我的网址被更改了,但文件仍然没有上传。
  • 另外,当我使用示例 php 代码上传文件时,它确实有效。
  • 另外,当我使用示例 php 代码上传文件时,它确实可以工作。 '代码' Html:

  • 那你不能用那个吗?
  • 我只用过,但需要在页面上添加更多内容,然后它会停止上传文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多