次のことを行うための最良のアプローチが何であるかについて、いくつかの提案を得ることができるかどうか疑問に思っていました...
私は現在、JavaScript から (jQuery を使用して) Flash AS3 関数を呼び出しています。この関数は、この Flash ファイルで既に選択されているファイルをアップロードします。その後、Flash はファイルをアップロードし、処理されたファイルを処理する php ファイル (upload.php) を呼び出します。これはすべてうまくいきます。ただし、アップロードされたファイルに関連するその他の詳細が入力されます (ユーザーがテキスト ボックスに入力します)。アップロードされた場所へのファイル パスを含むすべてのデータは、DB に保存する必要があります。これは、別の php ファイル (processData.php) への ajax 呼び出しによって実行できます。私の問題は、ファイルをアップロードするときに、フラッシュを介してファイルとともに他の詳細を送信できないことです(少なくとも私が知っていることではありません)。これにより、2つの異なるphpスクリプトが実行されます。次に、ajax を介して呼び出される他の php スクリプトには、DB に追加するファイル情報がありません。必要に応じてこの情報をセッションに保存できますが、これを行うための最良の方法として私を説得することはできません。他のアイデアや提案はありますか?
私が持っているコードがかなりあるので、これを巨大な質問にするのを避けるために、私が重要だと思うJS部分とフラッシュのいくつかのスニペットを投稿して、何が起こっているのかを知ることができます...コードを確認したい場合は、お気軽に質問して投稿してください...
JS:
$("#uploadAudio").submit(function(event) {
event.preventDefault();
var form = $(this);
var title = form.find("#title").val();
var desc = form.find("#desc").val();
var flash = $("#flash");
var flashFileSet = flash.get(0).jsIsFileSelected();
if(flashFileSet)
{
$.ajax({
type: "POST",
url: "processData.php",
dataType: "text",
data: "title=" + title + "&desc=" + desc,
async: false,
success: function() {
audFile.get(0).jsUploadFile();
}
});
}
});
閃光
public function fUploader(){
req = new URLRequest();
req.url = ( stage.loaderInfo.parameters.f )? stage.loaderInfo.parameters.f : 'http://virtualmanagementonline.com/ajax/audUpload.php';
pFilterType = ( stage.loaderInfo.parameters.filterType )? stage.loaderInfo.parameters.filterType : 'Images';
pFileFilters = ( stage.loaderInfo.parameters.fileFilters )? stage.loaderInfo.parameters.fileFilters : '*.jpg;*.jpeg;*.gif;*.png';
file = new FileReference();
setup( file );
select_btn.addEventListener( MouseEvent.CLICK, browse );
progress_mc.bar.scaleX = 0;
tm = new Timer( 1000 );
tm.addEventListener( TimerEvent.TIMER, updateSpeed );
cancel_btn.addEventListener( MouseEvent.CLICK, cancelUpload );
cancel_btn.visible = false;
ExternalInterface.addCallback("jsUploadFile", uploadFile);
ExternalInterface.addCallback("jsIsFileSelected", IsFileSelected);
}
public function browse( e:MouseEvent ){
filefilters = [ new FileFilter(pFilterType, pFileFilters) ]; file.browse( filefilters );
}
private function selectHandler( e:Event ){
var tf = new TextFormat();
tf.color = 0x000000;
label_txt.defaultTextFormat = tf;
label_txt.text = file.name;
//file.upload( req );
}
public function IsFileSelected():Boolean{
if(label_txt.text != "")
{
return true;
}
else
{
return false;
}
}
public function uploadFile():void{
file.upload(req);
}
* *注:フラッシュ コードはたくさんあるので、すべてを示しているわけではありません。正確に何が起こっているのかを理解するために必要だと思ったものを掲載しました。
詳細について追加できるものがあれば、お知らせください。前もって感謝します!