1

メールの添付ファイルを扱っています。プレーンなMAIL CLASSを使用してメールと添付ファイルを送信できますが、このAJAX FILE UPLOADをメール クラスと一緒に使用すると、添付ファイルは取得されますが、サーバーにアップロードしたファイルは取得されません。例えば。Test.doc。メールを受信すると、連絡先フォームからメールと添付ファイルが送信されますが、正しいファイルが添付されていません。Test.doc の代わりに、私が受け取っているのは、拡張子のないプレーンな「アップロード」ファイルです。

Controller.php

 $allowed = array('png', 'jpg', 'gif','zip', 'doc', 'docx', 'xps');

    if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){

    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);

    if(!in_array(strtolower($extension), $allowed)){
        echo '{"status":"error"}';
        exit;
    }

    if(move_uploaded_file($_FILES['upl']['tmp_name'], './uploads/'.$_FILES['upl']['name'])){
        echo '{"status":"success"}';
        exit;
    }
}


        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {

            $mail = new Mail();

            $mail->protocol = $this->config->get('config_mail_protocol');

            $mail->parameter = $this->config->get('config_mail_parameter');

            $mail->hostname = $this->config->get('config_smtp_host');

            $mail->username = $this->config->get('config_smtp_username');

            $mail->password = $this->config->get('config_smtp_password');

            $mail->port = $this->config->get('config_smtp_port');

            $mail->timeout = $this->config->get('config_smtp_timeout');             

            $mail->setTo($this->config->get('config_email'));

            $mail->setFrom($this->request->post['email']);

            $mail->setSender($this->request->post['name']);

            $mail->addAttachment('./uploads/'.$_FILES['upl']['name']);

            $mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));

            $mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));

            $mail->send();

            $this->redirect($this->url->link('services/printing/success'));


        }
$this->data['action'] = $this->url->link('services/printing');

    <form id="upload" action="<?php echo $action; ?>" method="post" enctype="multipart/form-data">

<div id="drop">
                Drop Here

                <a>Browse</a>
                <input type="file" name="upl" multiple />
            </div>

            <ul>
                <!-- The file uploads will be shown here -->
            </ul>
    </form>

'./uploads/ は、サーバーにアップロードされたファイルが保存されるフォルダーです。これはルート ディレクトリにあります。例: public_html/uploads。uploads フォルダーにアップロードされたファイルを確認できます。例えば。Test.doc、test.docx。test.zip など

これは私が得ているものです

ここに画像の説明を入力

4

1 に答える 1

0

私の推測では、もうそこ$_FILES['upl']['name']$mail->addAttachment('./uploads/'.$_FILES['upl']['name']);はありません。ファイル名を変数に渡してみてください。

$fname = './uploads/'.$_FILES['upl']['name'];
if(move_uploaded_file($_FILES['upl']['tmp_name'], $fname)){
    echo '{"status":"success", "fname" : "'.$fname.'"}';
    exit;
}
于 2013-09-05T11:13:11.503 に答える