0

Dropbox アップロード スクリプトは正常に動作しますが、ファイルが Dropbox にアップロードされた/されていないことをメール受信者に知らせる必要があります。以下は私が使用しているコードです...

<?
 if( ($_SESSION['security_code']==$_POST['security_code']) &&   (!empty($_POST['security_code'])) ) { 
 mail("test@email.co.uk","Website Print Shop Enquiry","Form data:

 Contact Name: " . $_POST['field_1'] . " 
 Company (if applicable): " . $_POST['field_2'] . " 
 Address (optional): " . $_POST['field_3'] . " 
 Postcode: " . $_POST['field_4'] . " 
 Phone: " . $_POST['field_5'] . " 
 Email: " . $_POST['field_6'] . " 
 Dropbox File Uploaded?: " . >>RESULT HERE<< . " 
 Details of enquiry: " . $_POST['field_7'] . " ",$headers);


 if ($_POST) {
   require 'DropboxUploader.php';


    try {
      // Rename uploaded file to reflect original name
       if ($_FILES['file']['error'] !== UPLOAD_ERR_OK)
         throw new Exception('File was not successfully uploaded from your computer.');

         $tmpDir = uniqid('/tmp/DropboxUploader-');
       if (!mkdir($tmpDir))
         throw new Exception('Cannot create temporary directory!');

       if ($_FILES['file']['name'] === "")
         throw new Exception('File name not supplied by the browser.');

       $tmpFile = $tmpDir.'/'.str_replace("/\0", '_', $_FILES['file']['name']);
       if (!move_uploaded_file($_FILES['file']['tmp_name'], $tmpFile))
         throw new Exception('Cannot rename uploaded file!');

       // Enter your Dropbox account credentials here
        $uploader = new DropboxUploader('username is here', 'password is here');
        $uploader->upload($tmpFile, $_POST['dest']);

      } catch(Exception $e) {
       }

// Clean up
     if (isset($tmpFile) && file_exists($tmpFile))
         unlink($tmpFile);

     if (isset($tmpDir) && file_exists($tmpDir))
         rmdir($tmpDir);
      }

  include("confirm-print.htm");
 }
else {
  echo "Invalid Captcha String. Please use the back button in your browser and try again, thank you.";
 }

?>

ファイルがアップロードされたかどうかを示すためにアクセスする必要がある変数を見つけようとしています。関連する DropboxUploader.php ファイルはhttps://github.com/jakajancar/DropboxUploader/blob/master/DropboxUploader.phpにあります。

4

2 に答える 2

1

DropboxUploader.phpの 92 行目を見てください。アップロードが失敗した場合、「アップロードに失敗しました!」というメッセージとともに例外がスローされます。

このファイルを修正し、例外クラスを DropboxUploadException のようなより具体的なものに変更することをお勧めします (もちろん、この例外サブクラスを最初に定義します)。次に、コードを次のように変更します。

try
{
    // Your old code until "$uploader->upload($tmpFile, $_POST['dest']);"
    try
    {
        $uploader->upload($tmpFile, $_POST['dest']);

        $upload_success = true;
    }
    catch(DropboxUploadException $e)
    {
        $upload_success = true;
    }

    // At the very end move your mail() function call and you can use $upload_success
    // variable to display file upload success or failure
}
catch(Exception $e)
{
    // Generic exception handling
}
于 2013-01-09T10:37:10.643 に答える
0

並べた!PHPファイルの先頭でifステートメントを使用しました...

if($_FILES['file']['name']==""){
        $result = "None"; //no file was uploaded
    }
    else
    {
        $result = "Yes";
    }
于 2013-01-09T11:30:35.147 に答える