1

ファイルをアップロードし、タイムスタンプで名前を変更してDBに登録するファイルアップローダーをjQueryで作成しようとしています。基本的に、フォームを含むファイルをサーバーに送信し、そこで 2 番目のスクリプトがファイルの名前を変更し、ファイルを正しいディレクトリに移動します。これは問題なく動作します。問題は、この DB エントリを作成するテーブル名も送信したいということです。

したがって、index.php には次の形式が含まれます。

<div id="uploaderMain">
        <p>Upload Your Files</p>
        <form method="post" enctype="multipart/form-data"  action="./upload.php">
            <input type="file" name="images" id="images" />
            <input type="hidden" name="List" id="List" value="<?php echo $DBTable; ?>" />
            <button type="submit" id="btn">Upload Files!</button>
        </form>

    <div id="response"></div>
        <ul id="image-list">
        </ul>
    </div>

jQuery コードは次のようになります。

$.ajax({
    url: "./uploader/upload.php",
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    success: function (res) {
        document.getElementById("response").innerHTML = res;
        }
      });

upload.php は次のようになります。

   <?php
//include db configuration file

include_once('../../db.php');

$List = $_POST['List'];

// get the time stamp for the uploaded file
date_default_timezone_set('EST');
$date = new DateTime();
$date = $date->getTimestamp();
// echo $date;


foreach ($_FILES["images"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $name = $_FILES["images"]["name"][$key];
        // store the file name and the file ending in 2 variables
        $fileEnding = substr($name, -4,4);
        $fileName = substr($name, 0, (strlen($name)-4));
        $uploadName =  $fileName."_".$date.$fileEnding;
        move_uploaded_file( $_FILES["images"]["tmp_name"][$key], "./uploads/" . $uploadName);
    }
}

その後、DBに書き込みたい。問題は、$_POST['LIST'] ステートメントが DBTable-name を提供しないことです。

誰でも私にヒントを与えることができますか?

乾杯ダン

4

2 に答える 2

0

これをjQueryコードに追加する必要があると思います。

formdata.append('List', '[your value]');

注意:PHPでは、ファイルであるすべてのものが$_FILESに入れられます。他のすべては$_POSTに入ります。

これが機能しない場合は、次のコードもあることを確認してください。

var formdata = new FormData();          
jQuery.each($('input[type="file"]')[0].files, function(i, file) {
    formdata.append(i, file);
});
于 2013-02-18T21:02:55.403 に答える
0

Listコントロールに値がある場合、ブラウザからソースを確認できますか。

于 2013-02-17T16:20:09.507 に答える