2017-12-07 6 views
0

私はPHPを使用して自分のウェブサイト用の簡単なファイルアップロード機能を作成しようとしています。私はone.comを使用しています。私はこの中に画像フォルダを持っている資産フォルダを持っています。画像をアップロードしたい場所です。ファイルのイメージパスに何を入れるのか分かりません。イメージをアップロードしようとすると、「完了」がページにエコーされますが、イメージはフォルダに表示されません。one.comのPHPで画像アップロード機能を作成する

if(isset($_POST['submit'])){ 


// GETTING INFO FROM FILE WE'VE UPLOADED 
$file = $_FILES['image']; 
$fileName = $_FILES['image']['name']; 
$fileTmpName = $_FILES['image']['tmp_name']; 
$fileSize = $_FILES['image']['size']; 
$fileError = $_FILES['image']['error']; 
$fileType = $_FILES['image']['type']; 
//Splitting the filename on the extension 
$fileExt= explode ('.', $fileName); 
//Getting the extension from the file and tolower so we can find out if it is an allowed file type 
$fileActualExt = strtolower(end($fileExt)); 
//File types that we are going to allow 
$allowed = array('jpg','jpeg','png'); 

if(in_array($fileActualExt, $allowed)){ 
    if($fileError === 0){ 
     $fileNameNew = uniqid('', true).".".$fileActualExt; 

     $fileDestination = '/assets/images/'.$fileName; //PROBLEM?? 

     move_uploaded_file($FileTmpName, $fileDestination); 
     echo"Done?"; 
    }else{ 
     echo "There was an error?"; 
    }} 
    else { 
    echo "You cannot upload files of this type"; 
}} 
+0

try $ fileDestination = './assets/images/'.$fileName; –

+0

これが構文エラーであるか、単にアーキテクチャに関する概念的な質問であるかについて、より詳細に説明します。あなたがバグを修正したり他の何かを解決するために使用するよう求めているかどうかははっきりしていません。 – Matt

+0

ファイルパスは、静的サーバー上のパブリック/プライベートエンドポイントを表す必要があります。これらのイメージがモデル(ユーザ、会社、製品、レビューなど)のコンテキストに固有のものである場合、私は 'filepath'があなたのモデルの情報から再生成できるように、ある種の形式の名前付けパターンを作成します。たとえば、Review of a Cafeの画像を保存していた場合、サーバーに保存されたパスは '/ images/review /:reviewId /:uuid.jpeg'となります。ここで':reviewId'はレビューモデルから引き出され、 :uuidはアップロード時に生成され、すべてが一意であるレビューによって写真を選択する機能を提供します。 – Matt

答えて

0

PHPにはそのディレクトリに書き込む権限がありますか?

move_uploaded_file()でエラーをチェックしていない場合は、「完了」と表示されているだけです。

imagesディレクトリのアクセス許可を確認し、ファイルが移動されていることを確認します。

if(move_uploaded_file($FileTmpName, $fileDestination)){ 
    //File was moved 
}else{ 
    //Error 
} 
また

、助け

$fileDestination = 'assets/images/'.$fileNameNew; //PROBLEM?? 

希望に

$fileDestination = '/assets/images/'.$fileName; //PROBLEM?? 

変更してみてください!

0

あなたの使用方法が間違っています。完全なパスか、実行しているファイルの場所からの相対パスが必要です。フルパスのため

$fileDestination = getcwd().'/assets/images/'.$fileName; 

のいずれかを試す、または単に

$fileDestination = './assets/images/'.$fileName; 

カレントディレクトリからの相対パス。これは、実行中のファイルがassetsフォルダを含む同じディレクトリにあると仮定します。

関連する問題