0

アップロード/ダウンロード プロセスに問題があります。ファイルは BLOB として mysql に挿入されますが、ダウンロードすると、呼び出し元の php ページの html マークアップが取得されます。データベースに挿入する前に、アップロードしたファイルを一時ディレクトリに移動する必要がありますか?

編集: 現在の upload.php ファイル。実際のファイル自体ではなく、まだhtmlコンテンツを取得していますが、正しく名前が付けられています。

           <?php
                    // Make sure an ID was passed DOWNLOAD HANDLER *******
if(isset($_GET['id'])) {
// Get the ID
    $id = intval($_GET['id']); var_dump($id);


    require_once ('../mysqli_connect.php'); //Connect to the db



        // Fetch the file information
        $downloadq = "
            SELECT `file_type`, `size`, `title`, 'content', 'upload_id'
            FROM `upload`
            WHERE `upload_id` =".$id;
        $result = mysqli_query ($dbc, $downloadq); // Run the query


        if($result) {
            // Make sure the result is valid
            if (mysqli_num_rows($result) > 0) {
            // Get the row
                $row = mysqli_fetch_assoc($result);
                //var_dump($row);

                // Print headers
                header("Content-Type: application/msword");
                header("Content-Length: ". $row['size']);
               header("Content-Disposition: attachment; filename=". $row['title']);
               header("Content-Transfer-Encoding: binary");


                // Print data
                echo (stripslashes($row['content']));


            }
            else {
                echo 'Error! No such ID.';
            }

            // Free the mysqli resources
            mysqli_free_result($result);
        }
        else {
            echo "Error! Query failed: <pre>{$dbc->error}</pre>";
        }
        mysqli_close($dbc);
}
                ?>
4

2 に答える 2

0
CREATE TABLE `file` (
    `id`        Int Unsigned Not Null Auto_Increment,
    `name`      VarChar(255) Not Null Default 'Untitled.txt',
    `mime`      VarChar(50) Not Null Default 'text/plain',
    `size`      BigInt Unsigned Not Null Default 0,
    `data`      MediumBlob Not Null,
    `created`   DateTime Not Null,
    PRIMARY KEY (`id`)
)
于 2012-05-28T11:30:27.910 に答える
0

これを試すことができます。次の行の後

echo (stripslashes($row['content']));

もう一行書く

exit;

多分これはあなたを助けるでしょう。

于 2012-05-23T15:41:33.660 に答える