2010-12-15 5 views
3

私のフォームにアップロードするインスタンスが2つあります。以下の定義が見つかります。uploadifyのインスタンスが複数ある場合にscriptDataが渡されない

アップロードをトリガーする2つのボタン。イメージボタンは、質問に関連する唯一のものです:さて、ここでのは問題です

$("#btnimageupload").button().click(function() 
{ 
$('#picbrowse').uploadifySettings('scriptData', ({ 'isSelected': $('#selectImage').val() })); 
$('#picbrowse').uploadifyUpload(); 
}); 

私はbtnimageuploadボタンをクリックすると、画像がアップロードされません。プログレスバーが100になり、停止します。エラーやjavascriptなどはありません。

しかし、では、vdobrowseファイルの入力ボックスと対応するスクリプトを無効にすると、すべて正常に動作します。画像がアップロードされ、データが転送されます。

ここで難しい部分は...私はbtnimageuploadクリックハンドラでscriptDataを渡さないと、画像はページのvdobrowseファイル入力ボックスでもアップロードされます。

私は、scriptDataがページ上に複数のuploadifyインスタンスがある場合にアップロードを中断しているようです。

私はこれをどのように解決できるか知っていますか?

Uploadifyは

$('#picbrowse').uploadify(
{ 
uploader : 'script/uplodify/uploadify.swf', 
script : '../../dopost.php', 
cancelImg : 'script/uplodify/cancel.png', 
folder : '/images', 
queueID : 'picqueue', 
auto  : false, 
multi  : true, 
fileDesc : 'Image Files', 
fileExt  : '*.gif;*.jpg;', 
queueSizeLimit: 5, 
scriptData: 
({ 
    'action': 'upload_image', 
}), 
onComplete: function(event, queueID, fileObj, response, data) 
{ 
    console.log(reponse) 
} 
}); 

を定義します。

$('#vdobrowse').uploadify(
{ 
uploader : 'script/uplodify/uploadify.swf', 
script : '../../dopost.php', 
cancelImg : 'script/uplodify/cancel.png', 
folder : '/video', 
queueID : 'vdoqueue', 
auto  : false, 
multi  : true, 
fileDesc : 'Video Files', 
fileExt  : '*.avi;*.mpg;*.mov;*.mp4;*.mpeg;*.flv;*.mkv;*.wmv', 
queueSizeLimit: 5, 
scriptData: 
{ 
    action: 'upload_video' 
}, 
onComplete: function(event, queueID, fileObj, response, data) 
{ 
    console.log(response); 
} 

}); 
+0

問題を再現できるようにマークアップとdopost.phpを共有してみませんか? – ifaour

答えて

1

プラグインは、scriptDataで二つ以上の uploadify年代を使用しているとき、それは scriptDataの最後の格納された値を拾っている理由 あるグローバル空間に オプションを入れているように見えます。

私は1つの ページに無意味な運動を2つのuploadify年代を実行すると、このような ように私は 複数uploadifyさんと機能をテストすることはありません参照してください。 uploadifySettingsは、 が1つアップロードされると完全に動作します。複数アップロード可能な は、 異なる設定が可能であることを示すデモページです。

それはユーザーのために、明らかにまだ 問題であり、同じページに複数の uploadify年代を使用したいもののためにそれを修正する我々は にする必要があります、と述べました。

Forum

私はswfUploadを使用することをお勧めします。私は自分のプロジェクトで使用しており、複数のインスタンスでテストしており、それは完璧な作業です。だからswfUploadは理解しやすく、apiはuploadify APIのように見えます。

1

scriptDataと複数のUploadifysの制限があるようだが、scriptDataとfolder属性をスキップして、dopost.php内のファイルタイプを解析し、それに基づいてアクションを実行することができます。例えば

$fileParts = pathinfo($_FILES['Filedata']['name']); 
$extension = strtolower($fileParts['extension']); 
switch($extension){ 
    case "gif" | "jpg": 
     // Do Image Upload Action 
    break; 
    case "avi" | "mpg" | "mov" | "mp4" | "mpeg" | "flv" | "mkv" | "wmv": 
     // Do Video Upload Action 
    break; 
} 
+0

これはドロップダウンボックスからの '{'isSelected':$( '#selectImage').val()}'を送信するために必要なデータです。 – HyderA

1

私はちょうど罰金scripDataを受けていますが、私は明白な理由のために500キロバイトにアップロードサイズを制限されてきたmy website
に例を作り、コードを修正しました:

$('#picbrowse').uploadify(
{ 
    uploader : 'uploadify.swf', 
    script : 'uploadify.php', 
    cancelImg : 'cancel.png', 
    folder : 'uploads/images', 
    queueID : 'picqueue', 
    auto  : false, 
    multi  : true, 
    removeCompleted : false, 
    fileDesc : 'Image Files', 
    fileExt  : '*.gif;*.jpg', 
    sizeLimit : 512000, 
    queueSizeLimit: 5, 
    scriptData: {action: 'upload_image'}, 
    onComplete: function(event, queueID, fileObj, response, data) 
    { 
     $ul.html(''); 
     var json = jQuery.parseJSON(response); 
     $.each(json,function(k,v){ 
      var li = "<li>"+k+": "+v+"</li>"; 
      $ul.append(li); 
     }); 
    }, 
    onError: function (event,ID,fileObj,errorObj) { 
     console.log(errorObj.type + ' Error: ' + errorObj.info); 
    } 
}); 

$('#vdobrowse').uploadify(
{ 
    uploader : 'uploadify.swf', 
    script : 'uploadify.php', 
    cancelImg : 'cancel.png', 
    folder : 'uploads/video', 
    queueID : 'vdoqueue', 
    auto  : false, 
    multi  : true, 
    sizeLimit : 512000, 
    fileDesc : 'Video Files', 
    fileExt  : '*.avi;*.mpg;*.mov;*.mp4;*.mpeg;*.flv;*.mkv;*.wmv', 
    queueSizeLimit: 5, 
    scriptData: {action: 'upload_video'}, 
    onComplete: function(event, queueID, fileObj, response, data) 
    { 
     $ul.html(''); 
     var json = jQuery.parseJSON(response); 
     $.each(json,function(k,v){ 
      var li = "<li>"+k+": "+v+"</li>"; 
      $ul.append(li); 
     }); 
    } 

}); 

そして私は、標準uploadify.phpを使用して、代わりにPOST変数をエコーし​​ています:

echo json_encode($_POST);