2016-04-08 71 views
1

我的代码遇到了问题。我知道我做错了什么,但我不知道是什么。 我有一张照片上传表单,如果它不存在,它必须创建一个文件夹,并将图片上传到该文件夹​​。同时创建文件夹并上传文件

所以我的问题是,我不能在同一时间做这两个 e。 如果该文件夹已经存在,图像将被上传,但是如果文件夹不存在,它只会创建文件夹,而我必须为该图片进行另一次上传才能进入该文件夹。

这是我的代码。

INDEX.HTML

<form action="" method="post" enctype="multipart/form-data"> 
<input id="input-image-3" class="file-loading" type="file" id="file" name="files[]" multiple="multiple" accept="image/*" /> 
</form> 

     <script> 
     $("#input-image-3").fileinput({ 
      uploadUrl: "upload.php", 
      allowedFileExtensions: ["jpg","jpeg", "png", "gif"], 
      maxImageWidth: 100, 
      maxImageHeight: 100, 
      resizePreference: 'height', 
      maxFileCount: 10, 
      resizeImage: true, 


     }).on('filepreupload', function() { 
      $('#kv-success-box').html(''); 
     }).on('fileuploaded', function(event, data) { 
      $('#kv-success-box').append(data.response.link); 
      $('#kv-success-modal').modal('show'); 
     }); 

     </script> 

upload.php的

<?php 
$valid_formats = array("jpg", "png"); 
$max_file_size = 1024*100; //100 kb 
$path = "up/test/"; // Upload directory, later i'll get the name of user 
$filename=$file['filename']; 
$extension = '.jpg'; 
$i=1; 
while(file_exists($path.$filename.$extension)){ 
        $filename=$file['filename']."teste_($i)"; 
       $i++;} 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    // Loop $_FILES to exeicute all files 
    foreach ($_FILES['files']['name'] as $f => $name) { 
     if ($_FILES['files']['error'][$f] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$f] == 0) {    
      if ($_FILES['files']['size'][$f] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 

        if(!is_dir($path)){mkdir($path, 0755);} // If dont exist, create folder 

       move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$filename.$extension);  
      }  
     } 
    } 
} 
echo json_encode (json_decode ("{}")); 
?> 

谢谢你在前进,

+0

尝试$ oldumask =的umask(0); mkdir($ path,0777,TRUE);的umask($ oldumask);我用这个技巧 –

+0

你好,@SameerJain。感谢您的帮助,我试图添加该代码,但不幸的是,这并不起作用。它在那时只是一个动作。 – grcoder

回答

2

尝试在新创建的目录文件上传此娄代码。

<?php 
    define("SITE_NAME","project_name/"); //constant for project name 
    define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']."/".SITE_NAME); //constant for project base directory 
    define("IMAGES_URL",SITE_URL."images/"); //constant for image directory 


    $upload_base_dir=IMAGES_URL; 
    $upload_time_dir=date('Y')."/".date('m')."/".date('d')."/"; // setup directory name 
    $upload_dir = $upload_base_dir.$upload_time_dir; 

    if (!file_exists($upload_dir)) { 
     mkdir($upload_dir, 0777, true); //create directory if not exist 
    } 

    $image_name=basename($_FILES['image']['name']); 
    $image=time().'_'.$image_name; 
    move_uploaded_file($_FILES['image']['tmp_name'],$upload_dir.$image); // upload file 
?> 
2

if(!is_dir($ path)){mkdir($ path,0755); 将其更改为777,并检查它是否有助于 或尝试了这一点

>  if(isset($_FILES["fileToUpload"]["name"]) && $_FILES["fileToUpload"]["name"] != "") 
>   { 
>    $target_dir = "/pics/"; 
>    $target_file = 'Image_'.basename($_FILES["fileToUpload"]["name"]); 
>  
>    $uploadOk = 1; 
>    $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); 
>  
>   // Check if image file is a actual image or fake image 
>    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
>  
>    if ($check !== false) { 
>     $msg['status'] = '1'; 
>     $msg['message'] = "File is an image - " . $check["mime"] . "."; 
>     $uploadOk = 1; 
>    } else { 
>     $msg['status'] = '0'; 
>     $msg['message'] = "File is not an image."; 
>     $uploadOk = 0; 
>    } 
>  
>   // Check if file already exists 
>    if (file_exists($target_file)) { 
>     $msg['status'] = '0'; 
>     $msg['message'] = "Sorry, file already exists."; 
>     $uploadOk = 0; 
>    } 
>   // Check file size 
>    if ($_FILES["fileToUpload"]["size"] > 5000000) { 
>     $msg['status'] = '0'; 
>     $msg['message'] = "Sorry, your file is too large."; 
>     $uploadOk = 0; 
>    } 
>   // Allow certain file formats 
>    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") { 
>     $msg['status'] = '0'; 
>     $msg['message'] = "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
>     $uploadOk = 0; 
>    } 
>  
>   // Check if $uploadOk is set to 0 by an error 
>    if ($uploadOk == 0) { 
>     $msg['uploadstatus'] = "Sorry, your file was not uploaded."; 
>   // if everything is ok, try to upload file 
>    } else { 
>     $target_dir = "/pics/"; 
>     if (!file_exists($target_dir)) { 
>      try { 
>       mkdir($target_dir); 
>      } catch (Exception $ex) { 
>       die("error"); 
>      } 
>     } 
>     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
> $target_dir.$target_file)) { 
>      $data['imageTitle'] = basename($_FILES["fileToUpload"]["name"]); 
>      $data['imageLink'] = $target_file; 
>      $data['memberId'] = 5;  
>       $msg['id'] = 5; 
>       $msg['name'] = basename($_FILES["fileToUpload"]["name"]); 
>       $msg['size'] = ($_FILES["fileToUpload"]["size"]/1024) . "kb"; 
>       $msg['status'] = '1'; 
>       $msg['message'] = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded."; 
>       $msg['uploadstatus'] = "file uploaded"; 
>       $msg['imagepath'] = $target_dir; 
>     
>     } else { 
>      $msg['status'] = '0'; 
>      $msg['message'] = "Sorry, there was an error uploading your file."; 
>      $msg['uploadstatus'] = "Sorry, your file was not uploaded."; 
>     } 
>  
>    } 
>   } 
+0

尊敬的@RishikRohan,我已经尝试了您的两种解决方案,但不幸的是他们都没有为我工作。你的代码输出两个错误。但我不会放弃它,我会尽力让它工作。谢谢 – grcoder

+0

可以请你分享你得到的错误吗? –

相关问题