2010-02-10 6 views
5

Sử dụng SWFUpload v2.2, Firefox 3, IE 8, Flash 10 Trong ứng dụng ASP.NET của tôi, tất cả các tệp tải lên đang được upload.aspx xử lý (tôi đã cài đặt đúng upload_url đối tượng cài đặt). Trong IE 8, các lần tải lên nhấn trang upload.aspx và được xử lý, nhưng trong Firefox thì không. Bất kỳ đề xuất?SWFUpload hoạt động trong IE, nhưng không phải trong Firefox

Hầu hết các mã cho các trang mà người dùng truy cập để tải lên một tập tin được đưa ra ở đây (lưu ý: các trang chủ đang được sử dụng):

<script type="text/javascript" src="../swfupload/swfupload.js"></script> 

<script type="text/javascript" src="../js/handlers.js"></script> 

<script type="text/javascript"> 
    var swfu; 
    window.onload = function() { 
     swfu = new SWFUpload({ 
      // Backend Settings 
      upload_url: "../upload.aspx", 
      post_params: { 
       "ASPSESSID": "<%=Session.SessionID %>" 
      }, 

      // File Upload Settings 
      file_size_limit: "10 MB", 
      file_types: "*.*", 
      file_types_description: "All Files", 
      file_upload_limit: 1, 
      file_queue_limit: 1, 
      //assume_success_timeout: 60, 

      // Event Handler Settings - these functions as defined in Handlers.js 
      // The handlers are not part of SWFUpload but are part of my website and control how 
      // my website reacts to the SWFUpload events. 
      file_queue_error_handler: fileQueueError, 
      file_dialog_complete_handler: fileDialogComplete, 
      upload_progress_handler: uploadProgress, 
      upload_error_handler: uploadError, 
      upload_success_handler: uploadSuccess, 
      upload_complete_handler: uploadComplete, 

      // Button settings 
      button_image_url: "../Images/XPButtonNoText_160x22.png", 
      button_placeholder_id: "spanButtonPlaceholder", 
      button_width: 160, 
      button_height: 22, 
      button_text: '<span class="button">Upload File<span class="buttonSmall">(10 MB Max)</span></span>', 
      button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt; } .buttonSmall { font-size: 10pt; }', 
      button_text_top_padding: 1, 
      button_text_left_padding: 5, 

      // Flash Settings 
      flash_url: "../swfupload/swfupload.swf", // Relative to this file 

      custom_settings: { 
       upload_target: "divFileProgressContainer" 
      }, 

      // Debug Settings 
      debug: false 
     }); 
    } 
</script> 

Trả lời

1

Sử dụng một proxy HTTP dấu vết/debug để xem nếu bất cứ điều gì thực sự đang được gửi tới máy chủ và phản hồi nào đang được nhận, nếu có. Charles là tác phẩm yêu thích của tôi và hoạt động tốt với Flash (và mọi thứ khác HTTP). WireShark và Fiddler là các tùy chọn khác.

Charles http://www.xk72.com/charles/

Wireshark http://www.wireshark.org/

Fiddler http://www.fiddler2.com/fiddler2/

+0

Charles là một đề xuất tuyệt vời! Sử dụng Charles tôi đã có thể xác nhận rằng không có gì đang được gửi đến máy chủ (tất cả các yêu cầu đều là GET). Bây giờ tôi vẫn đang cố gắng tìm ra lý do tại sao! Ngoài ra, không có lưu lượng truy cập từ IE được hiển thị ở Charles, vì vậy tôi đang gặp khó khăn trong việc tìm ra POST thành công như thế nào. Charles được cho là sẽ tự động cấu hình IE, và nó xuất hiện, nhưng không có lưu lượng truy cập nào xuất hiện. – Xolamee

+0

Trình duyệt proxy của IE và Firefox hoạt động khác nhau. Từ những gì tôi nhớ, bạn phải bật proxy Windows đặc biệt cho IE và nếu bạn đang phát triển cục bộ, bạn cần tắt một cài đặt trong IE ở đâu đó để "bỏ qua proxy cho localhost". –

+0

Tôi chỉ nhận ra rằng đây là một vấn đề đã biết với IE 7 và truy cập vào trang web của tôi thông qua "http: // computername" thay vì "http: // localhost" khắc phục hành vi. Chạy quét của cả IE và Firefox tiết lộ rằng cả hai đều đi qua cùng một chuỗi GET giống nhau nhưng trong Firefox không có bài đăng nào để upload.aspx và trong IE thì có. Cảm ơn vì đã tiếp tục giúp tôi với Sam này. Có bất kỳ manh mối nào tôi có thể tìm kiếm mà có thể cho thấy tại sao Firefox không POST? – Xolamee

2

tôi biết, một bài cũ của mình, nhưng có lẽ nó sẽ giúp giải quyết vấn đề cho một số người, bởi vì tôi đã có cùng một vấn đề ngày hôm nay.

tôi giải quyết vấn đề này không với việc sử dụng các mảng bưu điện, vì tôi không biết làm thế nào, và ở đâu để gỡ lỗi kịch bản này, nhưng với việc tạo ra một chuỗi truy vấn

<script type="text/javascript"> 
    var swfu; 
    window.onload = function() { 
     swfu = new SWFUpload({ 
      // Backend Settings 
      upload_url: "../upload.aspx", 
      post_params: { 
       SessionID: "<%=Session.SessionID %>", 
       OtherID: "<%=OtherID %>" 
      }, 

      //And here comes the highlight 

      use_query_string : true, 

      //code ... 

Sau này, bạn sẽ nhận được một chuỗi truy vấn như này: ?SessionID=(id)&OtherID=(otherid)

Điều này làm việc với sự bảo đảm trong mọi trình duyệt.

+0

cho những gì bạn sử dụng OtherID? – Thariama

+0

nó không quan trọng. Tôi chỉ cần thêm nó làm ví dụ. Cảm ơn vì đã chú ý đến nó. –

+0

vì vậy điều quan trọng ở đây là việc sử dụng use_query_string? Tôi vẫn không hiểu cách giải quyết vấn đề này. Bạn có thể giải thích? – Thariama

0

Có vẻ như bạn có thể đang chạy vào this Flash bug. Giải pháp của Nort là cách hầu hết mọi người đã làm việc xung quanh nó. Tuy nhiên, tùy thuộc vào ngôn ngữ/khung công tác của bạn, bạn có thể cần phải thêm một số mã phía máy chủ bổ sung để lấy biến phiên từ url và buộc nó được sử dụng làm phiên hiện tại.

Bạn có thể thử giải pháp trong this StackOverflow question hoặc thử googling một cái gì đó như 'flash upload cookie'.

1

http://demo.swfupload.org/Documentation/

vấn đề Cookie

Trên Windows plugin Non-IE Flash Player (FireFox, Opera, Safari, vv) sẽ gửi cookie IE không phụ thuộc vào trình duyệt được sử dụng. Điều này phá vỡ xác thực và phiên cho nhiều công nghệ kịch bản phía máy chủ.

phát triển nên tự vượt qua phiên và xác thực thông tin cookie và tự khôi phục phiên trên Server Side nếu họ muốn sử dụng phiên

Gói SWFUpload chứa công việc xung quanh mẫu mã cho PHP và ASP.Net

===== Thực hiện một số lần giảm giá vé xác thực từ đó sẽ làm cho mọi việc tốt

Bạn cũng có thể làm cho nó có điều kiện xác thực này chỉ được áp dụng khi người dùng đang sử dụng tải lên

Tuy nhiên , một số kiểm tra để đảm bảo rằng cookie xác thực không nhận được xung quanh phần khác của trang web có thể quan trọng tùy thuộc vào cách bạn phát hành cookie cho hành động này.

2

Hãy thử trong một trình duyệt khác, chẳng hạn như Safari hoặc Chrome.

Nếu nó chỉ hoạt động trong IE, đó có thể là lỗi Cookie Cookie mà các câu trả lời khác đề cập đến.

Nếu nó hoạt động trong mọi thứ trừ Firefox, có thể là không có css nào được xác định cho thanh tiến trình. Tôi không biết tại sao điều này gây ra một vấn đề, nhưng tôi thấy rằng nó đã làm. Ngay sau khi tôi đặt các kiểu mẫu vào tệp css của tôi, nó bắt đầu hoạt động trong Firefox.

Các css Tôi đã từng là như sau:

DIV.ProgressBar { width: 100px; padding: 0; border: 1px solid black; margin-right: 1em; height:.75em; margin-left:1em; display:-moz-inline-stack; display:inline-block; zoom:1; *display:inline; } 
DIV.ProgressBar DIV { background-color: Green; font-size: 1pt; height:100%; float:left; } 
SPAN.asyncUploader OBJECT { position: relative; top: 5px; left: 10px; } 
+0

Cảm ơn câu trả lời tuyệt vời. Tôi đã có một lỗi mà nó sẽ tải lên tốt trong IE8/9, nhưng trong Firefox nó sẽ thất bại nói (trong ASP.NET) Request.Files thu được trống rỗng. Thêm mã CSS làm cho nó tải lên hoàn hảo trong Firefox. –

1

Chỉ muốn xác nhận rằng cùng một vấn đề đã được chỉ định bằng cách thêm post_params biến đến init SWFUpload.

post_params : { 
    PHPSESSID : '<?=session_id()?>' 
}, 
0

Tôi tìm thấy câu trả lời ... cuối cùng. Tôi đã đấu tranh với điều này trong một thời gian rất dài. Không thể tin đây là câu trả lời. Lý do là SUBST.

Tôi có một máy tính có ổ SSD và vì nó chỉ là 256GB nên tôi quyết định không phân vùng. Tuy nhiên tôi thích phân chia giữa các phân vùng C và D và tôi mô phỏng nó trên ổ SSD thông qua lệnh subst. Nếu tôi lấy tập tin từ ổ đĩa được tạo bằng lệnh subst, tải lên swf không hoạt động. Tôi gần như không thể tin rằng, nhưng nó là một thực tế cuối cùng tôi phát hiện ra ngày hôm nay là không thể tải lên các tập tin trên máy tính phát triển của tôi chỉ.