2016-11-14 57 views
0

我使用Dropzone JS和从我的前端(localhost:9000),我打电话upload.php我得到的图像,然后将其上传到后端(localhost:80 )在一个文件夹中。 这里是我的html:Dropzone JS无法上传文件

<form action="localhost:80/ProgettoTimelinegit/api/upload.php" class="dropzone" id="my-dropzone" enctype="multipart/form-data"> 

</form> 

我的javascript:

Dropzone.autoDiscover = false; 
$("#my-dropzone").options = { 
    maxFilesize: 4, // MB 
    url:"http://localhost:80/ProgettoTimelinegit/api/upload.php", 
    addRemoveLinks : true, 
    uploadMultiple:true, 
    paramName:"file", 
    parallelUploads: 2, 
    maxFiles: 10, 
    autoProcessQueue: true, 
    headers: { 
     // remove Cache-Control and X-Requested-With 
     // to be sent along with the request 
     'Cache-Control': null, 
     'X-Requested-With': null 
    } 
}; 

和upload.php的

$ds = DIRECTORY_SEPARATOR; //1 
$storeFolder = '/xampp/htdocs/images/'; //2 

if(!empty($_FILES)) { 
    // START // CREATE DESTINATION FOLDER 
    define('DESTINATION_FOLDER','../api/upload/'); 

    if ([email protected]_exists(DESTINATION_FOLDER)) { 
     if (!mkdir(DESTINATION_FOLDER, 0777, true)) { 
      $errors[] = "Destination folder does not exist or no permissions to see it."; 
     } 

     // END // CREATE DESTINATION FOLDER 
     $temp = $_FILES['file[]']['tmp_name']; 
     $dir_seperator = "fold/"; 

     //$destination_path = dirname(__FILE__).$dir_seperator.$folder.$dir_seperator; 
     $destination_path = DESTINATION_FOLDER.$dir_seperator; 
     $target_path = $destination_path.(rand(10000, 99999)."_".$_FILES['file']['name']); 
     move_uploaded_file($temp, $target_path); 
    } 
} 

如果我上传的图片,在控制台(对于每一个浏览器) it

POST localhost:80/ProgettoTimelinegit/api/upload.php net::ERR_UNKNOWN_URL_SCHEME 

我想要做的是在本地主机加载图片:80/progettoTimelinegit/API /上传/

+0

我从HTTPS使用教程:// WWW .startutorial.com /篇/图/如何到内建一个文件上传 - 成型 - 使用 - dropzonejs及PHP – Fedeco

回答

0

upload.php -file已经在api -folder,只是改变这一行:

define('DESTINATION_FOLDER','../api/upload/');

到:

define('DESTINATION_FOLDER','upload/');

它应该工作。你有很多奇怪的变量,未使用的变量等,所以也可能有其他的错误。

0

我设法使它工作,非常贵4天的工作,但现在它的工作原理: 你必须在你的代码的某些部分小心:

的Html

Do not add enctype="multipart/form-data" or if you do remember to add rewrite rule 

“多部分/格式数据” 使悬浮窗AUTOMATICALLY组OPTIONS请求

虚拟主机或一个的.ini /的.htaccess与XAMPP/wampp /游民

VirtualHost *:80> 
    DocumentRoot "#folderOfyourWebsite" 
    ServerName yoursite.name 
    <Directory "#path To The HTML of Your Index Page"> 
     Options Indexes FollowSymLinks MultiViews ExecCGI 
     AllowOverride Authconfig FileInfo 
     Require all granted 
     </Directory> 
     Header set Access-Control-Allow-Origin "*"  
     Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" 
     Header set Access-Control-Max-Age "1000" 
     Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" 
     RewriteEngine On 
     RewriteCond %{REQUEST_METHOD} OPTIONS 
     RewriteRule ^(.*)$ $1 [R=200,L] 
    </VirtualHost> 

在重写引擎我们告诉他:好吧,如果你收到一个选项的请求,用200重写(全成后)

所以你的待办事项列表可以用这个来重述:

  1. 检查你的HTML表单悬浮窗,如果你有加密类型,你得写 在你的虚拟主机或HTA重写规则ccess
  2. 你写了重写规则为了使cors Successfull?
  3. 确保你的路径有所有权限和上传文件夹存在

  4. 检查静态路径,无论你正在做一个HTTP请求