0

私は自分のアプリ Carrierwave でサウンドのアップロードに使用しています。

しかし、アップロードするサウンドを選択すると、"toto.mp3" のような間違ったサウンドだったので、"titi.mp3" のような別のサウンドを選択し直すというバグがあります。今私のサウンドをアップロードすると、私のアプリのファイルは最初に選択されたサウンドなので「toto.mp3」ですが、「toto.mp3」ではなく「titi.mp3」を選択します。

助けていただければ、このバグを解決する方法がわかりません。

アップローダー

 # encoding: utf-8
require 'carrierwave/processing/mime_types'

class SoundUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes

  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :fog

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "#{Rails.root}/tmp/files/#{model.user_id}/#{model.id}"
  end


  def extension_white_list
    %w(3ga 3gp 3g2 3gpp 3gp2 m4a m4b m4p m4v m4r mp4 aac flac flv avi asf wma wmv dpx mkv mka mks bwf mpg mpeg mp1 mp2 mp3 
      m1v m1a m2a mpa mpv rm mov ogm ogg ogv oga ogx nut riff webm weba wav mxf asx ts aiff aif aifc au snd caf)
  end

  # Override the filename of the uploaded files:
  # Avoid using model.id or version_name here, see uploader/store.rb for details.
  def filename
    model.title = original_filename if model.title.to_s ==  ''
    "#{secure_token}.#{file.extension}" if original_filename.present?
  end

  protected
  def secure_token
    var = :"@#{mounted_as}_secure_token"
    model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
  end
end

そして私のJavascript:

$(function () {
    $('#new_sound').fileupload({
        dataType: 'script',
        dropZone: $('#new_sound'),
        acceptFileTypes:  /(3ga|3gp|3g2|3gpp|3gp2|m4a|m4b|m4p|m4v|m4r|mp4|aac|flac|flv|avi|asf|wma|wmv|dpx|mkv|mka|mks|bwf|mpg|mpeg|mp1|mp2|mp3|m1v|m1a|m2a|mpa|mpv|rm|mov|ogm|ogg|ogv|oga|ogx|nut|riff|webm|weba|wav|mxf|asx|ts|aiff|aif|aifc|au|snd|caf)$/i,
        limitMultiFileUploads: 1,
        add: function (e, data){
            var file = data.files[0];
            var filetype = $(this).fileupload('option', 'acceptFileTypes');
            if (filetype.test(file.name)) {
                $('#title').val(file.name);
                $('#select_file').css('color', '#00A300');
                $('#send_file').css('display', 'inline');
                $("#send_file").on('click', function () { data.submit(); });
                $("#stop_file").on('click', function () {
                    $('#progress_file .bar').css('width', '0%');
                    data.abort();
                });
            }
            else {
                alert('Format de fichier non supporté.');
            }
        },
        progress: function (e, data){
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress_file .bar').css('width', progress + '%');
        },
    });
});
4

1 に答える 1

0

私はバグを見つけました.JSで次の行を削除しました:limitMultiFileUploads:1、そして今ではそれが機能します。:)

$('#new_sound').fileupload({
        dataType: 'script',
        dropZone: $('#new_sound'),
        acceptFileTypes:  /(3ga|3gp|3g2|3gpp|3gp2|m4a|m4b|m4p|m4v|m4r|mp4|aac|flac|flv|avi|asf|wma|wmv|dpx|mkv|mka|mks|bwf|mpg|mpeg|mp1|mp2|mp3|m1v|m1a|m2a|mpa|mpv|rm|mov|ogm|ogg|ogv|oga|ogx|nut|riff|webm|weba|wav|mxf|asx|ts|aiff|aif|aifc|au|snd|caf)$/i,
        limitMultiFileUploads: 1,

$('#new_sound').fileupload({
        dataType: 'script',
        dropZone: $('#new_sound'),
        acceptFileTypes:  /(3ga|3gp|3g2|3gpp|3gp2|m4a|m4b|m4p|m4v|m4r|mp4|aac|flac|flv|avi|asf|wma|wmv|dpx|mkv|mka|mks|bwf|mpg|mpeg|mp1|mp2|mp3|m1v|m1a|m2a|mpa|mpv|rm|mov|ogm|ogg|ogv|oga|ogx|nut|riff|webm|weba|wav|mxf|asx|ts|aiff|aif|aifc|au|snd|caf)$/i,
于 2013-12-17T14:30:29.777 に答える