【问题标题】:Upload php script problems上传php脚本问题
【发布时间】:2017-10-24 19:23:30
【问题描述】:

使用 Expression Web,想将图像上传到我的网页,即使是用脚本编写的,也不会收到错误消息。将上传文件夹设置为与所有人共享。 php.ini 设置为 file_uploads=on;upload_max_size=128M。在 Firefox 上脚本超时,在 IE 上“Internet Explorer 无法显示页面”。

几周来我一直在寻找答案。即使我是 php 的新手,我尝试过的所有其他脚本都可以正常工作。这个上传的事情让我摸不着头脑。最近的上传脚本尝试:

if (isset($_POST['submitted'])) {

    // Check for an uploaded file:
    if (isset($_FILES['upload'])) {

        // Validate the type. Should be JPEG or PNG.
        $allowed = array ('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
        if (in_array($_FILES['upload']['type'], $allowed)) {

            $target_path = "C:/uploads/";
            $name=$_FILES['upload']['name'];
            $error=$_FILES['upload']['error'];
            $tmp_name=$_FILES['upload']['tmp_name'];

            if($error==UPLOAD_ERR_OK){

               if($_FILES['upload']['size']>0){

               move_uploaded_file($tmp_name, $target_path.$name); 

            print ("The file ".$name." has been uploaded.\n");

             } else{

             print ("There was an error uploading the file, please try again!\n");

             }

             }elseif ($error==UPLOAD_ERR_NO_FILE) {

             print("No files specified.\n");

             }else{

             print("Upload failed.\n");

             }
             print("\n");


        }//End of !in_array IF.

    } // End of isset($_FILES['upload']) IF.


} // End of the submitted conditional.
?>

<div>
  <form action="photogallery.php" enctype="multipart/form-data" method="post">
  <input type="hidden" name="MAX_FILE_SIZE"  value="524288" />
  <p><b>File:</b><input name="upload" type="file" /></p>
  <input name="submit" type="submit" value="Submit" />
  <input name="submitted" type="hidden" value="TRUE" />
  </form>
</div>

我正在尝试将图像上传到我目录中的上传文件夹中,然后显示在我的网页上。我已手动将图像放入文件夹,它们将通过链接显示在我的网页上,但使用这些脚本无法正常工作。我的网站没有上线,它正在开发中,我正在使用 XAMPP 和 Microsoft 开发服务器。

【问题讨论】:

  • if (question.title.match(/!{2,}/)) { question.close() }
  • 它的工作原理很奇怪..我只是复制粘贴了整个代码并将其命名为photogallery.php,创建了上传目录并尝试上传。不过,我正在使用 WAMP (php 5.3.5)。

标签: php file-upload expression-web


【解决方案1】:

实际的错误很难说。但是你的脚本有几点需要提一下(典型的上传脚本问题):

  • ['name'] 常量可能为空,这可以解释上传错误。
  • 但它也可能被篡改,并包含诸如 "../Windows/System.ini" 之类的内容,这对您的脚本来说并不是那么好,因为您将其用作未过滤的输出文件名。
  • MIME ['type'] 同样不可靠。但这可能不是这里的问题。至少在上面使用strtolower(),而不是列出多个 MIME 替代方案。
  • 最后启用error_reporting(E_ALL);,它会告诉您是否存在 move_upload_file() 权限问题。

我建议你从一个简单的开始

move_uploaded_file($_FILES["upload"]["tmp_name"], "C:/uploads/test.1");

然后逐渐将它与您的其他条件一起扩展,以找到您上传问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多