私の Rails アプリでは、ユーザーがファイルをアップロードできるように、フォームに file_field 入力があります。ユーザーがファイルをアップロードすると、ajax を使用してフォームが自動的に送信されます。Safari と Chrome では正常に動作しますが、Firefox では、[ビデオのアップロード] ボタンをクリックしても [ファイルのアップロード] ウィンドウ (ユーザーがアップロードするファイルを選択する場所) が表示されず、ファイルなしでフォームが自動的に送信されます。 .
Firefox でファイルのアップロードを機能させるために何か特別なことはありますか?
これが私のコードです:
<div id="uploadVideoWrapper" title="Add Video">
<button class="btn btn-primary uploadVideoButton">
Upload Video
</button>
<input class="video_file_upload_field" id="video_video_path" name="video[video_path]" onchange="return validateFileExtension(this)" type="file">
</div>
そして、ユーザーがファイル (video.js.coffee.erb) をアップロードしたら、Ajax でフォームを送信します。
jQuery ->
$('#videoEmbedModal').fileupload
dataType: "script"
add: (e, data) ->
console.log('uploaded video')
types = /(\.|\/)(mov|mp4|avi)$/i
file = data.files[0]
size = file.size/(10e5)
size_limit = 25 # file size limit is 50 mb
if (types.test(file.type) || types.test(file.name)) && (size < size_limit)
$('#video_submit').html('Saving...')
$('#videoFileName').html(file.name)
$('.uploadVideoButton').attr('disabled', true)
$('.video_file_upload_field').attr('disabled', true)
$('.loadingIcon').show()
$('#images').append('<div class="placeholder video" style="background-image: none">uploading video...<br><%=image_tag("icons/loading.gif")%></div>');
$('.placeholder').hide();
data.context = $(tmpl("video-upload", file))
# $('#videoUploadProgress').append(data.context)
data.submit()
else if (size > size_limit)
alert("Your video is larger than 50 MB and cannot be uploaded. Please upload to Youtube or Vimeo and embed your video instead.")
else
alert("#{file.name} is not a supported video format")
progress: (e, data) ->
if data.context
progress = parseInt(data.loaded / data.total * 100, 10)
# data.context.find('.bar').css('width', progress + '%')
if progress == 100
setTimeout ( ->
$('.embedModal').modal('hide');
), 2000
$('.placeholder').show();
document.getElementById("images").scrollTop = document.getElementById("images").scrollHeight