图片没有移动到上传目录(教程)

时间:2015-06-14 22:41:46

标签: php dropzone.js

这似乎是一个非常普遍的问题,而且我已经针对我的具体情况通过问题挖掘了很多......但是我无法找到它。

我一直在使用此处的Dropzone.js教程:http://www.startutorial.com/articles/view/how-to-build-a-file-upload-form-using-dropzonejs-and-php

UI显示正常,我在Tomcat日志中注意到正在调用php文件(见下文) - 但是,图像本身没有上传到目录中。

我在Ubuntu 14.04上运行Tomcat 7。 我确保该目录具有适当的权限(777)。 请参阅以下代码:

index.html(仅显示带有表单元素的div-请假设dropzone.js文件已正确链接):

<h3>Upload Images</h3>
        <form action="upload.php" class="dropzone" method="get" enctype="multipart/form-data">
            <div class="fallback">
            <input type="file" name="file" multiple/>
            </div>
        </form>

upload.php的:

<?php
$ds = DIRECTORY_SEPARATOR;
$storeFolder = 'uploads';

if (!empty($_FILES)) {

$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
$targetFile =  $targetPath. $_FILES['file']['name'];
move_uploaded_file($tempFile,$targetFile);

}
?>

tomcat日志:

[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/ HTTP/1.1" 200 2109
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/css/main.css HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/bootstrap/css/bootstrap-theme.min.css HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/js/dropzone.js HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/bootstrap/js/bootstrap.min.js HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/css/dropzone.css HTTP/1.1" 304 -
[14/Jun/2015:18:28:14 -0400] "GET /ImageUploader/bootstrap/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 -
[14/Jun/2015:18:28:19 -0400] "POST /ImageUploader/upload.php HTTP/1.1" 200 317

对于我将文件送到上传目录时缺少什么的想法?

1 个答案:

答案 0 :(得分:3)

这里的问题是你在表单中指定了一个GET方法,它覆盖了与该教程中项目文件相关的JS文件中的方法集。

  • 上传文件需要POST方法。

我从该页面获取的有关表单的代码如下:

<form action="upload.php" class="dropzone"></form>

并不意味着一种方法。使用教程中的确切编码文件,除非您确切知道自己在做什么,否则不要修改它们。

所以将表单代码更改为:

<form action="upload.php" class="dropzone" method="post" enctype="multipart/form-data">

该方法设置在我找到并与此相关的.js文件中,为https://raw.githubusercontent.com/enyo/dropzone/master/dist/dropzone.js

Dropzone.prototype.defaultOptions = {
      url: null,
      method: "post",

enctype也在该文件中:

 this.element.setAttribute("enctype", "multipart/form-data");

再次使用他们的代码而不是你的代码。

然后您添加了<input type="file" name="file" multiple/>,该页面上没有显示。

如果这给您带来麻烦,请尝试将其删除。

访问官方网站获取此拖放代码:

并阅读他们的整个文档。

在PHP.net上查阅以下内容:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。