新手问题 一个关于又拍云的问题

1272729223 · 2013年05月13日 · 最后由 _kaichen 回复于 2013年05月16日 · 2570 次阅读

这是又拍云技术回复我的:

您好,对于图片路径的问题,需要您的程序修改相应的引用路径,也就是把图片默认的引用域名,切换成又拍云的默认域名或您绑定的域名。
对于已经生成的缩略图或者根据您程序生成的缩略图,您只要把图片搬到又拍云后,保持路径的正确,就可以正常访问了,跟又拍云的缩略图规则没有关系的。

我已经把原先服务器上的图片上传至又拍云上面。 只是之前引用的是 /uploads/pictures/xxxxxxxxxx.jpg 目前需要的是http://files.domain.com/uploads/pictures/xxxxxxxx.jpg

原先的 picture_uploader.rb 原先上传文件的路径是uploads/pictures/image/xxxxxxx.jpg

require "digest/md5"
require "carrierwave/processing/mini_magick"

class PictureUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  process :resize_to_fit => [900, 600]

  version :thumb do
    process :resize_to_fill => [200, 200]
  end

  version :thumb_small, :from => :thumb do
    process :resize_to_fill => [150, 150]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def filename
    if super.present?
      @name ||= Digest::MD5.hexdigest(File.dirname(current_path))
      "#{@name}.#{file.extension.downcase}"
    end
  end
end

现在 picture_uploader.rb

require "digest/md5"
require "carrierwave/processing/mini_magick"
IMAGE_UPLOADER_ALLOW_IMAGE_VERSION_NAMES = %(origin thumb.medium thumb.small)
class PictureUploader < CarrierWave::Uploader::Base

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}"
  end

  def default_url
    "#{Setting.upload_url}/blank.png#{version_name}"
  end

  def url(version_name = "")
    @url ||= super({})
    version_name = version_name.to_s
    return @url if version_name.blank?
    if not version_name.in?(IMAGE_UPLOADER_ALLOW_IMAGE_VERSION_NAMES)
      raise "ImageUploader version_name:#{version_name} not allow."
    end
    [@url,version_name].join("!")
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def filename
    if super.present?
      model.uploader_secure_token ||= SecureRandom.uuid.gsub("-","")
      Rails.logger.debug("(BaseUploader.filename) #{model.uploader_secure_token}")
      "#{model.uploader_secure_token}.#{file.extension.downcase}"
    end
  end

end

现在上传之后的路径是 http://files.domain.com/uploads/picture/image/xxxxxxx.jpg

store_dir里的 mounted_as 去掉就好了。

#2 楼 @_kaichen thanks alot! 确实这样, 之前一直不知道怎么弄,原来如此。 哈哈

但是有个问题,我用 ftp 上传图片,但是那么多图片,ftp 有时候断掉或者有些图片无法上传 (服务器问题或是我这网络问题), 这一般如何解决呢?

#3 楼 @1272729223 FTP 传大量文件,要面临的是国内网络不好的问题,暂时无解:(

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册