簡體   English   中英

我如何從Base64獲取文件類型

[英]How do i get file type from Base64

您好,我正在創建一個api,並使用Paperclip和Base64上傳圖像。

這是我的方法。 我希望每個文件都被稱為avatarimage_type )。

我如何獲得image_type

這是代碼。

    9: def set_image(image_as_base64)
 => 10:   binding.pry
    11:   file = Paperclip.io_adapters.for(image_as_base64)
    12:   file.original_filename = "avatar.gif"
    13:   self.avatar = file
    14: end

4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)> image_as_base64
=> "data:image/gif;base64,R0lGODlhZABkAPABAAAAAP///yH5BAAAAAAALAAAAABkAGQAAAL+hI+hy+jAYnhJLnrsxVBP7n1YyHVaSYIeuqqna7Hv2NIzldoxLMm73uNFfEHgUNhAboxJ5hJXg94eOenPWsQenQriVtsEP6lR8tRRNV/VWfbXHYaP0WX6uXLPhOr4td3f1/YnGPg2aFgYd6iYONfYpQTJJSImWUkpZ5mJueiol2eQ1qk5yvlo+gmYSriK2Mr46hnKF0t66gU7C2qiqtvLy+obDOwqXEyciyyrbFuLapwsehv5zFwt7VyCu4wNzU3r3Rx+DW69LW5OfU6+250+uR6vPg9Pfylfn39vv4m/r9+PXyl/AQEOFDjNYMJ/DAs2PKjQmbuJ5Si2q4jxosb+XxY5ZvS4cVhHkR9Jhjw2EmVJlSejrXTZ8ltMdClhgrxpEidLnTZz+tz5syfQYwQhPlzoMKlRpUiXOm0KNRtCqRHHFY1qdWrWqu+OUvW6FWxXpl/JhjU79mlZtWfZpsX6di3cmjL3BK17l+ZLvEOF+uX7V+9MdjwBGxZcGHFewouvyn3cdu5exX0PM65MOfBlzY4jQ47rOTTo0XTRdSY9ebPl06VVZ16tFfVg1qlpz47d2nZi17x1N8ZdG/htrrmF7/aNuTe14sSDNx8ulnl059Oho5V+nXp2626xd9f+nbtk8Z+9jz9u/Pdz9Nqqs3evHn5y5JzTz7dff3387e9C+e8P3x+A/503YHngEXiffgnKlx+DdimnYIP+LTihhAJSeKGFCGpoIHmimddhgBvCFiGJDr6GIoQnqlihiS2meFoBADs="
4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)> file = Paperclip.io_adapters.for(image_as_base64)
=> Paperclip::DataUriAdapter: data
4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)> file.original_filename = "avatar.gif"
=> "avatar.gif"
4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)> self.avatar = file
=> Paperclip::DataUriAdapter: avatar.gif
4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)> self
=> #<Profile:0x007f9eabb58f00
 id: 657,
 user_id: 378,
 birthday: Tue, 29 Apr 2003,
 bio: "Quo incidunt labore et et et. Ea quasi cupiditate ipsam aut. Dolore nihil libero quia ipsum.",
 phone: "(899) 372-6477",
 address_line_1: "Bobby Freeway",
 address_line_2: "Llewellyn Shoal",
 suburb: "New Ryann",
 state: "Utah",
 postcode: "70026",
 country_code: "PE",
 first_name: "Pansy",
 last_name: "Medhurst",
 avatar_file_name: "avatar.gif",
 avatar_content_type: "image/gif",
 avatar_file_size: 617,
 avatar_updated_at: Thu, 03 Mar 2016 23:50:26 UTC +00:00>
4.2.5.1@2.2.4 (#<Profile:0x007f9eabb58f00>)>

做到這一點的方法如下。 content_type方法為您提供了一個““圖像/ jpg”,我只是將其保留了下來:

  def add_avatar(image_as_base64)
    file = Paperclip.io_adapters.for(image_as_base64)
    file_name = change_file_name(file)
    file.original_filename = file_name
    self.avatar = file
  end

  def change_file_name(file)
    file_name = file.content_type
    file_name.gsub("image/", "avatar.")
  end

您可以使用Rack:Mime ,它是Rails的依賴項。

您可以檢查以下答案:

Rails:如何根據MIME類型獲取文件擴展名/后綴

由於所有MIME類型都以“ /”作為分隔符(請參見http://www.sitepoint.com/web-foundations/mime-types-complete-list/

您可以使用“ avatar_content_type”值返回mime類型並獲取如下類型:

image_type = file.avatar_content_type.split("/")[1]
# OUTPUT: gif

現在,您可以像下面這樣建立欲望名稱:

name = "avatar (#{image_type})"

暫無
暫無

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

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