私は自分の情報を入力してファイルをアップロードできるフォームを含むhtmlページを作成しています。すべての情報はMySQLデータベースに挿入されます。PHPスクリプトからの情報の保存
Javascriptでは、XMLHttpRequestを使用してサーバーにファイルを送信し、「upload.php」を使用して名前を変更して(アップロードされた名前を避けるために)アップロードディレクトリに移動します。
ユーザーエクスペリエンス向上のため、フォーム全体を送信する前にこれを行います。
私の質問は:(submit.phpの)フォーム提出で新しいファイル名(upload.phpで定義)を使用するにはどうすればいいですか?
"submit.php"では、まず "user"テーブルにユーザー情報を挿入し、 "ファイル"テーブルにファイル名を挿入する "user_id"(自動インクリメント)を選択します。
これを行う方法として、phpセッションを使用できますか?別の方法がありますか?ご協力いただきありがとうござい
HTML:
<form action="submit.php" method="post" id="submitform">
<div>
<--!user info part1-->
</div>
<div id="filesContainer" class="eltContainer">
<input type="file" id="filesList" multiple>
</div>
<div>
<--!user info part2-->
</div>
のjavascript:
var fd = new FormData()
var xhr = new XMLHttpRequest()
for (var i=0,nb = fichiers.length; i<nb; i++) {
var fichier = fichiers[i]
fd.append(fichier.name,fichier)
}
xhr.open('POST', 'upload.php', true)
upload.php:私はようなものを使用して検討する
<?php
foreach($_FILES as $file){
$filename = date('Y') . date('m') . date('d') . date('H') . date('i') . basename($_FILES[$file]['name']);
move_uploaded_file($file['tmp_name'],"../upload_dir/" .$filename);
}
exit;
シンプルで、まだファイル名を持っている原因:、DBトランザクションを開始スケルトンレコード(レコードを作成するために必要な最低限)を挿入し、その挿入IDを取得し、IDがあなたのファイル名を構築することを使用ファイルの操作が完了したらレコードを更新するかトランザクションをコミットします。 –
ファイル名をDBに挿入すると、ファイル挿入IDは必要ありませんが、ユーザーはIDを外部キーとして挿入します。問題は私がファイルの操作/挿入を行うときですが、まだフォーム全体を送信した後にユーザーの挿入が届かないということです.dbトランザクションも最小限に抑えたいと思っています。とにかくおかげです。 –
同じものが成立します。プレースホルダーのユーザーレコードを作成して、ユーザーIDを取得できるようにします。プレースホルダーのファイルレコードに添付することができます。あなたが後で必要とするのは、破棄されたスケルトンを殺すための手直りスクリプトです。そうすれば、部分的にDBを埋めることはできません。この場合、 –