2

Google은 웹 응용 프로그램을 ruby ​​on rail에 있습니다. 이제 우리는 안드로이드와 아이폰 용 API와 앱을 개발 중입니다. 티타늄을 모바일 앱용으로 사용하고 있습니다. 파일을 업로드 할 웹 응용 프로그램에서 우리는 반송파를 사용합니다. carrierwave를 사용하여 파일을 업로드하기 위해 railscast에 표시된 것과 동일한 프로세스를 수행하고 있습니다. 내 질문은 어떻게 모바일 애플 리케이션에서 이것을 할 수 있습니다. 가능하다면 아이디어와 샘플 코드가 필요합니다. 다음은 웹 버전의 애플리케이션에서 잘 작동하는 코드입니다.rails app 및 carrierwave uploader에서 모바일의 이미지를 업로드하는 방법

컨트롤러 액션

def create_file 
    @community_message_file = Community::MessageFile.new(params[:community_message_file]) 

    respond_to do |format| 
     if @community_message_file.save 
     format.js {} 
     else 
     flash.now[:error] = @community_message_file.errors.size > 0 ? ErrorUtility.validation_errors(@community_message_file.errors) : 
      "Saving failed" 
     format.js {} 
     end 
    end 
    end 

어떤 방법 모델

mount_uploader :file_path, MessageFileUploader 

    validates :file_path, file_size: {maximum: 1.megabytes.to_i} 

    def extension 
    return extract_extension 
    end 

    def file_name 
    return File.basename(self.file_path.to_s) 
    end 

    def image? 
    file_extension = extract_extension 
    return true if (file_extension == 'jpeg' || file_extension == 'jpg' || file_extension == 'png' || file_extension == 'gif') 
    return false 
    end 

    private 

    def extract_extension 
    return File.extname(self.file_path.to_s).split('.').last 
    end 

그리고 내 업 로더 모델

include CarrierWave::MiniMagick 
    after :remove, :clear_uploader 
storage :file 
def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    def clear_uploader 
    @file = @filename = @original_filename = @cache_id = @version = @storage = nil 
    model.send(:write_attribute, mounted_as, nil) 
    end 

def extension_white_list 
    %w(jpg jpeg gif png doc docx xls xlsx pdf zip) 
    end 

def image?(new_file) 
    %w(jpg jpeg gif png).include?(new_file.extension.to_s) 
    end 

답변

0

그냥 IOS 시뮬레이터를 사용하여 테스트. 파일 필드를 사용하면 모바일 사파리가 사진 앱에 사진을 선택하라는 메시지를 표시합니다. 거기에서 백엔드에서 구현하는 방법은 무의미합니다. 브라우저 요청은 데스크톱에서와 동일하게 작동합니다.