Paperclip ile bir Rails 3 uygulamasında bazı html5 sürükle ve bırak işlevlerini almaya çalışıyorum. Yani, temelde:HTML5'ten dosyalar nasıl silinir RA5'e Sürükle-Bırak 3 App & Paperclip?
- Bir veya daha fazla dosya sürüklenip
- Dosyalar (bir anda birlikte veya tek) bir Raylar eylemine POST'ed olan bir DIV üzerine bırakılan
- Raylar eylem olarak her dosyaları kaydeder
Paperclip yeni eki Şu anda bu çalışma almak için tek yol bu ... Dosya verilerle bir XMLHttpRequest gönderme ve benim Raylar eylem request.raw_post okumak alarak çözüm olarak işe değil mi çünkü ek POST paramları ve özgünlük belirteci göndermem gerekiyor. İşte
Ben bugüne kadar ne var:<!-- IN MY VIEW -->
<h2>Drag and drop upload</h2>
<div id="drop">
<h2>Drop Files Here</h2>
</div>
<script type="text/javascript" charset="utf-8">
var dropbox = document.getElementById("drop");
drop = function(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files;
var count = files.length;
if (count > 0) {
// handleFiles(files);
var url = '/images/raw';
var request = new XMLHttpRequest();
request.open("POST", url, true); // open asynchronous post request
request.send(files[0]);
}
}
dragEnter = function(evt) {
evt.stopPropagation();
evt.preventDefault();
}
dragExit = function(evt) {
evt.stopPropagation();
evt.preventDefault();
}
dragOver = function(evt) {
evt.stopPropagation();
evt.preventDefault();
}
// init event handlers
dropbox.addEventListener("dragenter", dragEnter, false);
dropbox.addEventListener("dragexit", dragExit, false);
dropbox.addEventListener("dragover", dragOver, false);
dropbox.addEventListener("drop", drop, false);
</script>
Ve denetleyicisi eylemi: Yani
class ImagesController < ApplicationController
# ... Normal REST actions
def raw
name = "tmp_image.png"
data = request.raw_post
@file_content = File.open("#{Rails.root.to_s}/tmp/#{name}", "wb") do |f|
f.write(data)
end
@image = Image.new(:attachment => File.new("#{Rails.root.to_s}/tmp/#{name}"))
@image.save
File.unlink("#{Rails.root.to_s}/tmp/#{name}")
render :text => 'success'
end
end
, ek parametreleri içeren Uygulamama sürükle ve bırak dosyaları POST uygun yolu nedir ?
Belki bu yardımcı olabilir
jquery_file_upload ile carrierwave nasıl birleştirileceğini güzel bir örneğini göstermektedir, bu @ http://marc-bowes.com/2011/08/17/ drag-n-drop-Upload.html. Çoklu (nispeten küçük) dosya yüklemeleri için çözümü uygulamak gerçekten kolaydır. – Marc