2012-09-10 27 views
0

我試圖使用Play來實現SWFUpload!框架和一臺Mac。 使用Mac時,出現302錯誤(上傳錯誤:302)。我認爲,這似乎來自通過獲取Play!的上傳頁面而發生的重定向。框架(因爲它是從路線文件翻譯的?)。在Playframework和Mac上使用swfupload

它在Windows上的IE上正常工作。

我搜索了很多,並閱讀了很多,但沒有找到,如果有一個特定的解決方案。有沒有關於如何實現這一點的建議,或者對於另一個簡單的實現文件上傳器(對於大領域,有進展)的任何建議?

編輯:

我曾經嘗試都Safari和Firefox在我的MacBook和收益都作爲狀態的302上傳錯誤。我在Windows上再次嘗試使用IE,它工作正常。

在HTML(樣式表)代碼:

#{extends 'main.html' /} 
#{set title: 'Upload Media File' /} 

<script type="text/javascript" src="/public/swfupload/swfupload.js"></script> 
<script type="text/javascript" src="/public/swfupload/swfupload.queue.js"></script> 
<script type="text/javascript" src="/public/swfupload/fileprogress.js"></script> 
<script type="text/javascript" src="/public/swfupload/handlers.js"></script> 

<script type="text/javascript"> 
    var swfu; 

    window.onload = function() { 
    var settings = { 
    flash_url : "/public/swfupload/swfupload.swf", 
    flash9_url : "/public/swfupload/swfupload_fp9.swf", 
    upload_url: "doUpload", 
    file_post_name: "data", 
    post_params: {"article.id" : "${article?.id}"}, 
    file_size_limit : "1000 MB", 
    file_types : "*.*", 
    file_types_description : "All Files", 
    file_upload_limit : 1, 
    file_queue_limit : 0, 
    custom_settings : { 
    progressTarget : "fsUploadProgress", 
    cancelButtonId : "btnCancel" 
    }, 
    debug: false, 

    // Button settings 
    button_image_url: "/public/swfupload/TestImageNoText_65x29.png", 
    button_width: "65", 
    button_height: "29", 
    button_placeholder_id: "spanButtonPlaceHolder", 
    button_text: '<span>Start</span>', 
    button_text_style: ".theFont { font-size: 16; }", 
    button_text_left_padding: 12, 
    button_text_top_padding: 3, 

    // The event handler functions are defined in handlers.js 
    swfupload_preload_handler : preLoad, 
    swfupload_load_failed_handler : loadFailed, 
    file_queued_handler : fileQueued, 
    file_queue_error_handler : fileQueueError, 
    file_dialog_complete_handler : fileDialogComplete, 
    upload_start_handler : uploadStart, 
    upload_progress_handler : uploadProgress, 
    upload_error_handler : uploadError, 
    upload_success_handler : uploadSuccess, 
    upload_complete_handler : uploadComplete, 
    queue_complete_handler : queueComplete // Queue plugin event 
    }; 

    swfu = new SWFUpload(settings); 
    }; 

</script> 

<h2 class="title">#{get 'title' /}</h2> 
<div style="clear: both;">&nbsp;</div> 
#{form @index(), id:'uploadForm', enctype:'multipart/form-data'} 
<div class="entity"> 
    <p>This page demonstrates a simple usage of SWFUpload. It uses the Queue Plugin to simplify uploading or cancelling all queued files.</p> 

    <div class="fieldset flash" id="fsUploadProgress"> 
     <span class="legend">Upload Queue</span> 
    </div> 
    <div id="divStatus">0 Files Uploaded</div> 
    <div> 
     <span id="spanButtonPlaceHolder"></span> 
     <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" /> 
    </div> 
</div> 
#{/form} 

在路由文件(Articles.upload是屏幕時,doUpload通過SWFUpload的調用)的條目:

GET  /admin/articles/{id}/upload    Articles.upload 
POST /admin/articles/doUpload    Articles.doUpload 

EDIT 2: 我也嘗試了Uploadify,它會返回相同的錯誤。有沒有人知道Play的解決方法!框架或上傳者,與Play一起工作!

+0

你有沒有在Mac上試過,但使用不同的瀏覽器?處理文件上傳的代碼是什麼? – Samuel

+0

我添加了樣式表的代碼,並且在Mac上也檢查了firefox,但沒有喜悅(我確實有最新的Flash PLayer(11.4) –

回答

0

如果你在/admin/articles/{id}/upload並且沒有任何/ path/to/something調用doUpload,那麼你的目錄是錯誤的。可能是你在本地測試Windows,而是遠程測試MacOS?

在任何情況下,這個問題最有可能與操作系統無關,但與其他事情。

+0

我嘗試了一下,我從Parallels遠程運行Windows,然後測試在我的Mac本地(本地主機)上,但我有另一臺Mac來檢查,我也會看看路徑,也許如果我確定它是完全一樣的,那麼不需要302. –

+0

我嘗試了兩個建議,網絡上的mac和網絡上的另一個windows機器,但仍然存在同樣的問題。Play!Framework必須使用302重定向Mac上的Flash Player不支持的內容。 –