2017-06-07 7 views
0

複数の添付ファイルを含む電子メールを送信する前に、メールフォームに添付されたファイルをサーバーの一時ディレクトリにアップロードしようとしています。電子メールを送信する前にattchedファイルをtempディレクトリにアップロード

HTML

 <div class="file-upload-wrapper"> 
      <label class="file-field" data-max-files="6"> 
       <input type="file" name="photos" multiple> 
       <span>Drag your files here or click to select your files <span>.jpg, .png and .pdf</span></span> 
      </label> 
      <div class="uploaded-files"></div> 
     </div> 

パス

$path_to_holding_directory = "/var/www/vhosts/mysite/test.mysite.com/bin/"; 

ディレクトリにbinフォルダは、「777」の権限

PHPスクリプト

を持っています私は複数のファイルでこれをやろうとしませんが、これまでのところ成功しています

Array 
(
    [name] => gr-1.jpg 
    [type] => image/jpeg 
    [tmp_name] => /tmp/phpc7s2Ug 
    [error] => 0 
    [size] => 41253 
) 
Array 
(
    [name] => gr-2.jpg 
    [type] => image/jpeg 
    [tmp_name] => /tmp/php6qLSeb 
    [error] => 0 
    [size] => 51475 
) 

function rearrange($arr){ 
    foreach($arr as $key => $all){ 
     foreach($all as $i => $val){ 
      $new[$i][$key] = $val; 
     } 
    } 
    return $new; 
} 

if(isset($_FILES['photos'])) 
{ 
    $_photos = rearrange($_FILES['photos']); 

    foreach($_photos as $file) 
    { 
     $path_of_uploaded_file = $path_to_holding_directory . $file['name']; 
     $tmp_path = $file["tmp_name"]; 

     if(is_uploaded_file($tmp_path)) 
     { 
      if(!copy($tmp_path,$path_of_uploaded_file)) 
      { 
       $errors .= '\n error while copying the uploaded file'; 
      } 
     } 

     print_r($file); 

     $message .= $file['name']; 
    } 
} 

は、私は次の配列を取得します。私が実装しようとしているソリューションは、ここで発見されたenter link description here

+0

Whoah!速度を落とす!あなたは777のPUBLICディレクトリを持っていますか?あなたのアップロードフォルダをあなたのウェブルートの外に1つ下のフォルダに移動してください。誰でもアクセスできないようにしてください。 – delboy1978uk

+0

これは単なる試行です。もちろん、私はそれを根から完全に外します。 – AlexB

+0

あなたのHTMLフォームはどのように見えますか?あなたの質問を更新してください。また、何かエラーが出ますか?現在の結果は何ですか? – ar34z

答えて

0

あなたの入力フィールドを配列としてマークされていない: <input type="file" name="photos" multiple>

あなたが使用してそれを選択することができていても、それは複数のファイルの値を保持することはできません。この方法ファイルピッカー。フィールドの名前をphotos[]とします。投稿後、次のような配列が得られます:

Array 
(
    [photos] => Array 
     (
      [name] => Array 
       (
        [0] => image1.jpg 
        [1] => image2.gif 
       ) 
      // ... more values 
     ) 
) 

しかし、あなたもドロップターゲットを使用しているのを見ています。私はそれが何のプラグインなのかわかりませんが、あなたがまだ問題に直面しているなら、あなたはプラグインの作成者を参照するべきだと思います。プラグインではなく、自分で作成した場合は、コードを使って別の質問を作成してヘルプを入手してください。

+0

私はルートディレクトリの外にフォルダを作成し、すべて正常に動作していますが、フォルダには777の権限がありますが、これは潜在的な問題でしょうか? – AlexB

+0

誰もWeb経由でファイルに直接アクセスできないので、私はそうは思わない。 Apacheをファイル所有者と同じユーザーとして実行する場合、アクセス権を低くすることはできますが、共有ホスティングやサーバーの所有者でないと問題が発生する可能性があります。 – ar34z

+0

今すぐソートされました。あなたのご意見ありがとうございます – AlexB

関連する問題