只有一张图片被多次上传

Only one image getting uploaded multiple times

我一直在使用 mechanize gem 从 craigslist 抓取数据,我有一段代码可以将多张图片上传到 craigslist,所有文件路径都是正确的,但是只有一张图片被上传了多次怎么办原因。

 unless pic_url_arry.blank?
        unless page.links_with(:text => 'Use classic image uploader').first.blank?
          page = page.links_with(:text => 'Use classic image uploader').first.click
        end
        puts "After classic image uploader"
        form = page.form_with(class: "add")
        # build full file path before setting like this => file = File.join( APP_ROOT, 'tmp', 'image.jpg')
        i = 0
        pic_url_arry = pic_url_arry.shuffle
        pic_url_arry.each do |p|
          form.file_uploads.first.file_name = p
          i+= 1
          page = form.submit
          puts "******#{p.inspect}*******"
          puts "******#{page.inspect}*******"
        end unless pic_url_arry.blank?
        # check if the file uploaded sucessfully with no. of files with no. of imgbox on page.
        check_image_uploaded = page.at('figure.imgbox').count
        if check_image_uploaded.to_i == i.to_i
          # upload failure craiglist or net error.
        end
      end  

并且 pic 数组的值为 ["/home/codebajra/www/office/autocraig/public/uploads/posting_pic/pic/1/images__4_.jpg", "/home/codebajra/www/office/autocraig/public/uploads/posting_pic/pic/2/mona200.jpg", "/home/codebajra/www/office/autocraig/public/uploads/posting_pic/pic/3/images__1_.jpg"]。

只设置了一次保存表单的文件字段,即只拍摄一张首先点击的图像。因此,更新后的代码将是

unless pic_url_arry.blank?
    unless page.links_with(:text => 'Use classic image uploader').first.blank?
      page = page.links_with(:text => 'Use classic image uploader').first.click
    end
    puts "After classic image uploader"
    form = page.form_with(class: "add")
    # build full file path before setting like this => file = File.join( APP_ROOT, 'tmp', 'image.jpg')
    i = 0
    pic_url_arry = pic_url_arry.shuffle
    pic_url_arry.each do |p|
      form.file_uploads.first.file_name = p
      i+= 1
      page = form.submit
      form = page.form_with(class: "add")
      puts "******#{p.inspect}*******"
      puts "******#{page.inspect}*******"
    end unless pic_url_arry.blank?
    # check if the file uploaded sucessfully with no. of files with no. of imgbox on page.
    check_image_uploaded = page.at('figure.imgbox').count
    if check_image_uploaded.to_i == i.to_i
      # upload failure craiglist or net error.
    end
  end  

希望这能解决问题。