簡體   English   中英

CarrierWave錯誤,請上傳舊文件

[英]Error with CarrierWave , upload the old file

我在應用程序Carrierwave中使用了上傳聲音。

但是我有一個錯誤,如果我選擇要上傳的聲音,但它是錯誤的聲音,例如“ toto.mp3”,那么我會重新選擇其他聲音,例如“ titi.mp3”。 當我現在上傳聲音時,我的應用程序中的文件是第一個選擇的聲音,因此是“ toto.mp3”,但我選擇的是“ titi.mp3”而不是“ toto.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 + '%');
        },
    });
});

我發現了錯誤,只是在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,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM