这似乎是一个非常普遍的问题,而且我已经针对我的具体情况通过问题挖掘了很多......但是我无法找到它。
我一直在使用此处的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
对于我将文件送到上传目录时缺少什么的想法?
答案 0 :(得分:3)
这里的问题是你在表单中指定了一个GET方法,它覆盖了与该教程中项目文件相关的JS文件中的方法集。
我从该页面获取的有关表单的代码如下:
<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
旁注:错误报告应仅在暂存时完成,而不是生产。