2015-04-04 185 views
0

我無法上傳文件到uploads文件夾。我沒有使用公共文件夾,我刪除了公共文件,並在根導向器中移動了我爲Laravel創建的文件夾。如何在laravel5上傳文件並獲取上傳文件中的文件

app 
bootstrap 
config 
css 
database 
fonts 
images 
storage 
tests 
vendor 
uploads 
.env 
.htaccess 
index 

我AashishController.php

<?php 
namespace App\Http\Controllers; 
use Input; 
use Mail; 

class AashishController extends Controller 
{ 
public function index() 
{ 

return view('in'); 

} 
public function contact() 
{ 
    return view('contact'); 
} 
public function postcontact() 
{ 
    $name = \Input::get('name'); 
    $email = \Input::get('email'); 
    $phone = \Input::get('phone'); 
    $message1 = \Input::get('message'); 
    $file1 = Input::file('file1'); 

    $userr=$file1; 

    //Create directory if it does not exist 
    if(!is_dir("uploads/".$userr."/")) { 
     mkdir("uploads/".$userr."/"); 
    } 

    // Move the uploaded file 
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/".$userr."/". $_FILES["file"]["name"]); 

    $to ="[email protected]"; 
    $subject = "hi"; 
    $mail_body = '<html> 
     <body bgcolor="#573A28" topmargin="25"> 
     Put HTML content here with variables from PHP if you like 
     Variable display Example: 
     </body> 
    </html>'; 
    $headers = "From:[email protected]"; 
    $headers .= "Content-type: text/html"; 
    mail($to, $subject, $mail_body, $headers); 
    return view('test')->with('name', $name); 
} 
} 

如何從該目錄下的文件,並把它傳遞給看法?

回答

1

您是否收到任何錯誤?

您可能忘記了使用chmod 777上傳文件夾的寫入權限。

edit:從mkdir路徑中刪除最後一個斜槓。

並確保$userr變量包含dd($userr);

哦,好吧,我現在看到的有效值。

1-您嘗試發送對象而不是將字符串發送到mkdir函數。

2-即使我假設你正在嘗試向mkdir發送文件名爲什麼你需要創建一個以該文件名命名的文件夾?只需使用時間戳或類似於rand(100,999)的一些隨機值來創建子文件夾。

3 - 和你的$ userr包含這樣的對象:

object(Symfony\Component\HttpFoundation\File\UploadedFile)[9] 
    private 'test' => boolean false 
    private 'originalName' => string 'test.jpg' (length=22) 
    private 'mimeType' => string 'image/jpeg' (length=10) 
    private 'size' => int 667220 
    private 'error' => int 0 

所以沒有點把它作爲一個對象,甚至宣稱它。改用Input :: file('file1')代替。

public function postcontact() 
{ 
    $name = \Input::get('name'); 
    $email = \Input::get('email'); 
    $phone = \Input::get('phone'); 
    $message1 = \Input::get('message'); 
    $file1 = Input::file('file1'); 


    $timestamp = time(); 
    //Create directory if it does not exist 
    if(!is_dir("uploads/".$timestamp)) { 
     mkdir("uploads/".$timestamp); 
    } 

$sitepath = $_SERVER['DOCUMENT_ROOT']; 

     // Move the uploaded file 
Input::file('file1')->move($sitepath.'/uploads/'.$timestamp.'/', Input::file('file1')->getClientOriginalName()); 

    $to ="[email protected]"; 
    $subject = "hi"; 
    $mail_body = '<html> 
     <body bgcolor="#573A28" topmargin="25"> 
     Put HTML content here with variables from PHP if you like 
     Variable display Example: 
     </body> 
    </html>'; 
    $headers = "From:[email protected]"; 
    $headers .= "Content-type: text/html"; 
    mail($to, $subject, $mail_body, $headers); 
    return view('test')->with('name', $name); 
} 

,並在您的視圖訪問文件夾的路徑,我總是喜歡用這種風格:

$data['name'] = $name; 
$data['filepath'] = "uploads/".$timestamp."/".Input::file('file1')->getClientOriginalName(); 
return view('test',$data); 

在您看來,您可以訪問刀片模板引擎::

這些變量
name {{ $name }} <br /> 
filepath {{ $filepath }} <br /> 

或通過使用原始PHP變量:

name <?php echo $name; ?> <br /> 
filepath <?php echo $filepath; ?> <br /> 
+0

HTTP://msaashish.wc。lt /檢查現場url的錯誤 – 2015-04-04 16:42:59

+0

你可以編輯我的控制器並粘貼它 – 2015-04-04 16:50:52

+0

你可以粘貼完整的控制器 – 2015-04-04 16:53:56

0

我猜你沒有與形式發送文件,你的形式應該是:

{{ Form::open(["url"=>"/someurl", "files"=>true,])}  

粘貼您的視圖,其發佈數據

而你將它們轉移到一個文件夾上傳前,應檢查文件類型。

代替

$sitepath = $_SERVER['DOCUMENT_ROOT']; 

使用

$sitepath = public_path(); 
+0

使用公共路徑而不是文檔根的優點是什麼? – motto 2015-04-04 17:31:00

+0

爲什麼要在使用框架時使用核心內容 – 2015-04-04 17:34:04

相關問題