我在想,如果我能得到什么,最好的办法做到以下几点将是...的Javascript调用闪存功能上传文件
我目前从JavaScript调用一个Flash AS3函数(使用jQuery SOM建议)这个函数上传一个已经在这个Flash文件中被选中的文件。 Flash然后上传文件并调用处理处理文件的php文件(upload.php)。这一切工作正常。然而,还有其他与上传文件有关的详细信息(由用户在文本框中输入)。所有这些数据(包括上传文件的路径)都必须保存到数据库中。这可以通过调用另一个php文件(processData.php)的ajax来完成。我的问题是,当我上传文件时,我无法通过Flash发送其他详细信息(至少不是我知道的),从而导致执行2个不同的PHP脚本。其次,通过ajax调用的另一个php脚本没有文件信息添加到数据库。如果我想要的话,我可以将这些信息存储在会话中,但它似乎并不能说服我作为解决此问题的最佳方式。任何其他想法或建议?
我有很多代码可以避免让这个问题变得非常棘手JS后面的部分我认为很重要,一些Flash片段让你可以了解发生了什么...如果的theres anyhting否则你几乎看到代码的随意问及生病后它...
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);
}
* *注意:并非所有的Flash代码都显示,因为有很多。我提出我认为需要了解究竟发生了什么。
如果有什么我可以添加进一步的细节请让我知道。提前致谢!
我很困惑你为什么使用Flash? –