Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с загрузкой файлов 
V
    Опции темы
RedAlliance
  Дата 14.2.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



здравствуйте,у меня проблема с загрузкой файлов пользователем..а именно,получаю ошибку:

Invalid argument - public/uploaded_files/11.JPG-aiv000-Mon Feb 14 22:24:59 +0300 2011

RAILS_ROOT: D:/InstantRails/rails_apps/dip_project4
Application Trace | Framework Trace | Full Trace 
app/models/uploadedfile.rb:10:in `initialize'
app/models/uploadedfile.rb:10:in `open'
app/models/uploadedfile.rb:10:in `save'
app/controllers/home_controller.rb:283:in `upload_file'

в контроллере:(home_controller.rb)
Код
 def upload_file
      log_user()
      update()

      @course_visible = params[:course]
      @single_user = params[:accept]
      @confirm = params[:course_confirm]

      post = Uploadedfile.save(params[:upload],cookies[:username],@single_user,@course_visible,@confirm)
      flash[:uploaded] = "The file was successfully uploaded!"
      redirect_to :back
    end

в модели:(uploadedfile.rb)
Код
def self.save(upload,username,visible,course,confirm)
        @original = upload['datafile'].original_filename
        @name =  upload['datafile'].original_filename + "-" + username + "-" + Time.now().to_s
        directory = "public/uploaded_files"
        path = File.join(directory, @name)
        File.open(path, "wb") { |f| f.write(upload['datafile'].read)}

        if (confirm != nil)
            @courses = Course.find(:all,:conditions => ["course_name = ?", course])

            @courses.each do |show|
                @uploaded = Uploadedfile.new
                @filepath = directory + "/" + @name
                @size_of_file = File.size(@filepath)
                @uploaded.username = show.username
                @uploaded.original_filename = @original
                @uploaded.disc_filename = @name
                @uploaded.file_size = (@size_of_file/1024)
                @uploaded.save
          end
...
end


сделано практически как в тьюториале http://www.tutorialspoint.com/ruby-on-rail...e-uploading.htm
но почему-то не работает..у кого-нибудь были такие же проблемы?как исправить?
PM MAIL   Вверх
synaptic
  Дата 15.2.2011, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.11.2010

Репутация: нет
Всего: нет



Может быть стоит посмотреть в сторону paperclip?  smile 

https://github.com/thoughtbot/paperclip

PM MAIL   Вверх
RedAlliance
  Дата 24.2.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



проблема остаётся актуальной...
в коде ничего не изменилось..
ошибка следующая:
Invalid argument - public/uploaded_files/ReleaseNotes.txt-ama002-Thu Feb 24 00:44:57 +0300 2011

RAILS_ROOT: D:/InstantRails/rails_apps/dip_project4
Application Trace | Framework Trace | Full Trace 
app/models/uploadedfile.rb:9:in `initialize'
app/models/uploadedfile.rb:9:in `open'
app/models/uploadedfile.rb:9:in `save'
app/controllers/home_controller.rb:288:in `upload_file'
Request

Parameters: 
{"commit"=>"Upload",
 "accept"=>["ama001"],
 "authenticity_token"=>"6a6a510c0d90d66256297ab5b637e4195a2f9d8e",
 "upload"=>{"datafile"=>#<ActionController::UploadedStringIO:0x3fdd1c8>},
 "course"=>"Mathematical Analysis-1.1",
 "group"=>""}
что-то мне не нравится 
 "upload"=>{"datafile"=>#<ActionController::UploadedStringIO:0x3fdd1c8>},
то есть это хэш,как я понимаю..почему так получается??

PM MAIL   Вверх
DeTeam
Дата 25.2.2011, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



Тут все нормально, видимо проблема в имени файла:

File.open(path, "wb") { |f| f.write(upload['datafile'].read)}


тут же ошибка вылезает ?
PM MAIL WWW ICQ Jabber   Вверх
RedAlliance
Дата 26.2.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



да,ошибка там..но что такое может быть с именем файла?потому что так вылезает при выборе любого файла...
PM MAIL   Вверх
DeTeam
Дата 27.2.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



поменяйте строчку на

@name = "#{Time.now.to_i}_#{username}_#{upload['datafile'].original_filename}"
PM MAIL WWW ICQ Jabber   Вверх
RedAlliance
  Дата 27.2.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



спасибо вам большое smile 
PM MAIL   Вверх
RedAlliance
  Дата 16.3.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



при загрузке файлов слегка поменяла в связи с русскими буквами код в uploadfile.rb:
Код
if visible != nil
            puts "#{visible.mb_chars.length}"
            if (visible.mb_chars.length >= 6)#username consists of 6 bytes(3 bytes for letters + 3 bytes for digits).    
                until visible == nil or visible == "" 
                    @uploaded = Uploadedfile.new
                    @filepath = directory + "/" + @name
                    @size_of_file = File.size(@filepath)
                    if visible.mb_chars[visible.mb_chars.length - 1].to_s == " " or visible.mb_chars[visible.mb_chars.length - 1].to_s == ";" or visible.mb_chars[visible.mb_chars.length - 1].to_s == ","
                     @uploaded.username = visible.mb_chars[visible.mb_chars.length - 7,6].to_s
                     puts "with #{@uploaded.username}"
                     visible = visible.mb_chars[0, visible.mb_chars.length - 7].to_s    
                    else
                     @uploaded.username = visible.mb_chars[visible.mb_chars.length - 6,6].to_s
                     puts "without #{@uploaded.username}"
                     visible = visible.mb_chars[0, visible.mb_chars.length - 6].to_s    
                    end                                                
                    @uploaded.original_filename = @orginal
                    @uploaded.disc_filename = @name
                    @uploaded.file_size = (@size_of_file/1024)
                    @uploaded.save
                end
            end
            
        end


в контроллере не меняла:
Код
def upload_file
      log_user()
      update()
      
      @user = User.find(:first, :conditions => ["username = ?", cookies[:username]])
      @group_visible = params[:group]
      @users = params[:accept].to_s
    
  
      if not (@group_visible == nil and @users == nil and params[:datafile] == nil and params[:upload] == nil)
        post = Uploadedfile.save(params[:upload],@user.username,@users,@group_visible)
        flash[:uploaded] = "Файл был успешно загружен!"
      end
      
      redirect_to :back
    end


при этом с латиницей нормально работало:загружало тем,кого указал,а теперь ещё и лишним,а именно: почему-то всем преподам(userclass=1)-не понимаю,откуда???

PM MAIL   Вверх
RedAlliance
  Дата 20.3.2011, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.12.2010

Репутация: нет
Всего: нет



проблема решена в теме "русские буквы" smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0680 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.