0

HTMLメールを送信するためのデータを取得するために参照ボタンでテンプレートを選択する PHP メーラーを使用しています。

変数のデータを取得したい..データを取得できない..

Warning: fopen(filename.txt) [function.fopen]: failed to open stream: No such file or directory in PATH/php_mailer\sendmail.php on line 18
Cannot open file: filename.txt

HTML

   <form name="addtemplate"  id="addtemplate" method='POST' 
        action='' enctype="multipart/form-data">
            <table style="padding-left:100px;width:100%" border="0" cellspacing="10" cellpadding="0" id='addtemplate'>
                <span id='errfrmMsg'></span>
                <tbody>
                    <tr>
                        <td class="field_text">
                            Select Template
                        </td>
                        <td>
                            <input name="template_file" type="file" class="template_file" id="template_file" required>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input id="group_submit" value="Submit" type="submit" name='group_submit' />
                        </td>
                    </tr>
                </tbody>
            </table>
    </form>

PHPコード

if(isset($_POST['group_submit'])){
        if ($_FILES["template_file"]["error"] > 0) {
            echo "Error: " . $_FILES["template_file"]["error"] . "<br>";
        }
        else {
            echo $templFile = $_FILES["template_file"]["name"] ;
            $templFileHandler = fopen($templFile, 'r') or die('Cannot open file:  '.$templFile); //open file for writing ('w','r','a')...
            echo $templFileData = fread($templFileHandler,filesize($templFile));
        }
    }
4

2 に答える 2

4

$_FILES["template_file"]["name"] を $_FILES["template_file"]["tmp_name"] に置き換えてください

于 2012-12-21T08:34:53.203 に答える
3

$_FILES['template_file']['name']ブラウザがサーバーに送信したローカルファイル名であるため、機能しません。$_FILES['template_file']['tmp_name']代わりに必要なアップロードされたファイルを読み取るには:

echo $templFile = $_FILES["template_file"]["tmp_name"] ;
echo $templFileData = file_get_contents($templFile);

file_get_contents()また、 which を効果的に置き換えて使用していますfopen()fread()およびfclose(). 上記のコードはfile_get_contents()、何らかの理由での一部の失敗をチェックしません。これは次のようになります。

if (false === ($templFileData = file_get_contents($_FILES["template_file"]["tmp_name"]))) {
    die("Cannot read from uploaded file");
}
// rest of your code
echo $templFileData;
于 2012-12-21T08:31:45.487 に答える