現時点では、単一ページのアップローダーを作成しています。私は Javascript (+jQuery) で開発し、AppJSを使用しています。
このアップローダには、アップロード入力が可能な 2 つのフォームがあります。両方のフォームが 1 ページにあり、2 番目のフォームは非表示ですdisplay: none;
どちらも同じカスタムメイドのアップロード拡張機能を使用します。
最初のフォームで 2 つの画像を要求しましたが、それらは削除する必要があります。
画像をドロップすると、ソケット経由で nodejs サーバーにアップロードされ、正しく保存されます。
2番目のものをドロップすると、再びnodejsサーバーにアップロードされ、正しく保存されます。
次に、フォームをnodejsサーバーに投稿します
その後
.hide()
は第一形態.show()
、第二形態。
アップロード プラグインを再度使用すると、エラーは表示されませんが、ファイルもアップロードされません。
最初のフォームが投稿された後、FileReader.onload が実行されていないことに気付きました。
いくつかのサンプル コードの下に、アプリケーション全体を投稿することはできません。
HTML
<form id="formone" action="/formone">
<input type="text" name="background" value="Drop here" class="uploadinput" readonly />
<input type="text" name="logo" value="Drop here" class="uploadinput" readonly />
</form>
<form id="formtwo" action="/formtwo" style="display:none;">
<input type="text" name="icon" value="Drop here" class="uploadinput" readonly />
</form>
Javascript
// File upload extension
$.fn.extend({
filedrop: function() {
return this.each(function() {
var files = []
var $this = $(this)
// Catch drop event
$this.bind('drop', function(event) {
event.stopPropagation()
event.preventDefault()
console.log('Dropped') // Works in both forms
files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files
file = files[0]
var reader = new FileReader()
// reader.onload only works in form 1
reader.onload = function(e) {
var buffer = e.target.result
socket.emit('uploadfile', file.name, buffer)
}
reader.onerror = function(error) {
console.log("error", error)
console.log(error.getMessage())
}
reader.readAsBinaryString(file)
return false
})
})
}
})
$('.uploadinput').filedrop()
window.showFormTwo = function() {
$('#formone').hide()
$('#formtwo').show()
}
Node.js
app.router.post('/formone', function() {
window.showFormTwo()
})