0
JqueryFileUpload
によってアップロードされたファイルをSonata Mediaに保存しようとしていますが、動作しません。私はSymfony2のSymfony 2 Sonata MediaでJQueryFileUploadファイルを維持する
でJQueryFileUploadを統合するOneUpUploaderBundle使用 は、私はすでにpostUploadEvent
とpreUploadEvent
ととjQueryスクリプトからdata.filesで試してみました。
Symfony内またはJQuery経由でファイルオブジェクトを取得する方法を知っている人は、大きな助けになります。
public function onUpload(PreUploadEvent $event) {
$request = $event->getRequest();
$files = $request->files->get('uploadFiles');
foreach ($request->files->get('uploadFiles') as $fotoTemporaria) {
$foto = new Media();
$foto->setProviderName('sonata.media.provider.image');
$foto->setContext('default');
$foto->setBinaryContent($fotoTemporaria);
$foto->setEnabled(true);
$mediaManager->persist($foto);
$mediaManager->flush();
}
$response = $event->getResponse();
$response['uploadedFiles'] = $files;
$response['success'] = true;
return $response;
}
services.ymlファイル
media_upload_listener:
class: AppBundle\ClassServices\UploadListener
arguments: [@doctrine.orm.entity_manager]
tags:
- { name: kernel.event_listener, event: oneup_uploader.post_persist, method: onUpload }
とjQueryは、ファイルが
$(document).ready(function()
{
$('#fileupload').fileupload({
add: function (e, data) {
if (data.files && data.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#uploaded').append("<div id='imageNumber' class='imageContainer'><img class='imagePreview' src='" + e.target.result + "'> \n\
<input type='file' name='realMedia[]' style='display:none' value='" + e.target.result + "'></div>");
}
data.result = data.files[0];
reader.readAsDataURL(data.files[0]);
data.submit();
}
},
progress: function (e, data) {
var progress = parseInt(data.loaded/data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
},
done: function (e, data) {
var out ='';
var obj = data;
for (var i in obj) {
out += i + ": " + obj[i] + "\n";
}
this attribute is empty
alert(data.files);
}
});
});
私が間違っているなら、私を修正して、私はあなたがマスター親フォームの提出とXHRリクエストとしてファイルを送信誤解するかもしれないと思います。 –
はい。それは私がFacebookのようなギャラリーをプログラムする必要があるからです。アップロードしてイメージを作成し、プレビューしてギャラリーに公開する必要があります。そして、私はSonataMediaBundle、OneUpUploaderBundleとJqueryFileUploadを使用しています。 – Marcelo