图片不移动到上传目录(教程)
Image not moving to upload directory (tutorial)
这似乎是一个很常见的问题,我已经针对我的具体情况通过问题进行了大量挖掘...但我找不到它。
我一直在使用此处的 Dropzone.js 教程:http://www.startutorial.com/articles/view/how-to-build-a-file-upload-form-using-dropzonejs-and-php
UI 显示正常,我在 Tomcat 日志中注意到正在调用 php 文件(见下文)- 但是,图像本身不是正在上传到目录中。
我 运行 Tomcat 7 岁 Ubuntu 14.04。
我已确保该目录具有适当的权限 (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
关于我将文件上传到上传目录所缺少的东西有什么想法吗?
这里的问题是您在表单中指定了 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
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。
这似乎是一个很常见的问题,我已经针对我的具体情况通过问题进行了大量挖掘...但我找不到它。
我一直在使用此处的 Dropzone.js 教程:http://www.startutorial.com/articles/view/how-to-build-a-file-upload-form-using-dropzonejs-and-php
UI 显示正常,我在 Tomcat 日志中注意到正在调用 php 文件(见下文)- 但是,图像本身不是正在上传到目录中。
我 运行 Tomcat 7 岁 Ubuntu 14.04。 我已确保该目录具有适当的权限 (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
关于我将文件上传到上传目录所缺少的东西有什么想法吗?
这里的问题是您在表单中指定了 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
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。