HTML5-Datei drag-und-drop-upload mit Ruby on Rails

In meine Ruby on Rails-app, ich habe einen einfachen Datei-upload-Taste, die ich bin versucht zu ersetzen mit einer drag-und drop-box mit der Datei/FileReader-APIs in HTML5, mit dieses tutorial speziell. Wie benutze ich ein Ruby-Skript, um die Datei hochladen zu meiner public/data-Ordner. Ich bin mir nicht sicher, wie integrieren Sie die drag-und-drop-Skript mit, dass. Meine Idee war, die Datei-upload-button hatte ich schon ausgeblendet, und verwenden Sie Javascript, um Ihren Wert auf den Pfad der drag-and-Drop Bild, wenn der Benutzer versucht, sich zu Unterwerfen.

Jedoch, wenn ich versuche zu senden bekomme ich die Fehlermeldung:

Datei-Namen zu lang - public/data/data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAap/sABFEdWNreQABAAQAAABkAAD/4QMtaHR0cDovL25zLmFkb2JlLmNvbS94yxavms4wlwa8p3hwywnj....

da die temporäre Datei storage name von HTML5 ist einfach zu lange, denke ich.

Habe ich versucht die Verkettung der Zeichenfolge in den ersten 60 Zeichen und dann gab es den Fehler:

No such file or directory - public/Daten/data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAa

In jedem Fall, die Datei wird nicht Hinzugefügt bekommen, um public/data Ordner.

Mein HTML:

<%= form_tag( { :action => 'create' }, :multipart => true ) %>
<div id="dropbox"><span id="droplabel">Drop file here...</span></div>
<img id="preview" alt="[ preview will display here ]" />

<%= hidden_field_tag :uploadfile, :id => "uploadfile", :name => "uploadfile" %>
<br /><br />
<div id="submit">
<%= submit_tag( "Upload file" ) %>
</div>

Ruby:

def create
    name = params[:uploadfile]
    directory = "public/data"
    path = File.join(directory, name)
    File.open(path, "wb") { |f| f.write(params[:uploadfile].read) }
     @project = Project.new({:filename => name, :location => path})

    respond_to do |format|
      if @project.save
        format.html { redirect_to @project, notice: 'Project was successfully created.' }
        format.json { render json: @project, status: :created, location: @project }
      else
        format.html { render action: "new" }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end

und JS:

$("#submit input").click(function() {
    $("#uploadfile").val($("#preview").attr("src"));
});
InformationsquelleAutor user1436111 | 2012-10-08
Schreibe einen Kommentar