我想知道我是否可以就以下最佳方法获得一些建议...
我目前正在从 Javascript(使用 jQuery)调用 Flash AS3 函数,此函数上传已在此 Flash 文件中选择的文件。Flash 然后上传文件并调用处理处理后的文件的 php 文件 (upload.php)。这一切都很好。但是,还填写了与上传文件有关的其他详细信息(由用户在文本框中输入)所有这些数据,包括文件上传位置的文件路径,都必须保存到数据库中。这可以通过对另一个 php 文件 (processData.php) 的 ajax 调用来完成。我的问题是,当我上传文件时,我无法通过闪存发送其他详细信息以及文件(至少我不知道),这会导致执行 2 个不同的 php 脚本。其次,通过 ajax 调用的其他 php 脚本没有要添加到数据库的文件信息。如果我愿意,我可以将此信息存储在会话中,但这似乎并不能说服我作为解决此问题的最佳方式。还有其他想法或建议吗?
我有相当多的代码,以避免使这个问题成为一个巨大的问题,我会发布我认为很重要的 JS 部分和一些 flash 片段,这样你就可以了解发生了什么......如果还有其他问题喜欢看代码随时问和生病发布它......
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);
}
* *注意:并非所有的闪存代码都显示,因为有很多。我提出了我认为需要了解到底发生了什么的内容。
如果有什么我可以添加以获取更多详细信息,请告诉我。提前致谢!