2013-02-14 51 views
2

我使用Symfony2,我想使用BlueImp插件basic setupBlueimp jQuery文件上傳和symfony2:問題與自定義上傳處理程序

其實,我有一個表單,您可以在其中載入3張圖片和一首歌曲(這是一個藝術家註冊)。

作爲一個開始,我嘗試爲一張圖片實現插件。但是當我在我的輸入「圖片1」中選擇一個文件時,什麼都不會發生。什麼是錯誤的?

<html> 
<head> 
    <script type="text/javascript" src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/vendor/jquery.ui.widget.js') }}"></script> 
    <script type="text/javascript" src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/jquery.iframe-transport.js') }}"></script> 
    <script type="text/javascript" src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/jquery.fileupload.js') }}"></script> 
    </head> 


<form id="myForm" action="{{ path('MyBundle_artist_new') }}" {{ form_enctype(form) }} method="post" novalidate> 
    <div class="field"> 
     {{ form_label(form.picture1 "Picture 1") }} 
     {{ form_widget(form.picture1) }} 
     </div> 
     <input type="submit" value="Register"/> 
</form> 

<script type="text/javascript"> 

$(document).ready(function(){ 

    $('#myform_picture1').fileupload(
    { 
     dataType: 'json', 
     url:'{{path('MyBundle_ajax_upload_picture') }}', 
     done: function (e, data) { 
      $.each(data.result.files, function (index, file) { 
       $('<p/>').text(file.name).appendTo(document.body); 
      }); 
     } 
    }); 
    }); 
</script> 

這裏是上傳處理(該URL的行動{{路徑( 'MyBundle_ajax_upload_picture')}}:

<?php 

    public function ajaxUploadPicture() 
    { 
     $request = $this->get('request'); 
     $uploaded_file = $request->files->get('myform_picture1'); 

     if ($uploaded_file) 
     { 
      $picture1 = $this->processImage($uploaded_file); 
      $picture1->setPath('pictures/artist/' . $picture1); 
      $em->persist($picture1); 
      $em->flush(); 

      $response = 'success'; 
     } 

     else $response= 'error'; 

     $response = new Response(json_encode(array('response'=>$response))); 
     $response->headers->set('Content-Type', 'application/json'); 
     return $response; 
    } 

    public static function processImage(UploadedFile $uploaded_file) 
    { 
     $path = 'pictures/artist/'; 
     $uploaded_file_info = pathinfo($uploaded_file->getClientOriginalName()); 
     $filename = uniqid() . "." .$uploaded_file_info['extension']; 

     $uploaded_file->move($path, $filename); 

     return $filename; 
    } 

回答

1

您應該檢查你的Ajax請求得到什麼例如:

$('#myform_picture1').fileupload(
{ 
    dataType: 'json', 
    url:'{{path('MyBundle_ajax_upload_picture') }}', 
    done: function (e, data) { 
     $.each(data.result.files, function (index, file) { 
      $('<p/>').text(file.name).appendTo(document.body); 
     }); 
    }, 
    always: function (e, data) { 
     console.log(data); 
    } 
}); 

我不知道這行$uploaded_file = $request->files->get('myform_picture1'); 你確定你的文件輸入名是myform_picture1

請嘗試$uploaded_file = $request->files->get('myform[picture1]', array(), true);

+0

感謝您的答覆,但我一直都在我的螢火控制檯500內部服務器錯誤,當我用這個和$ uploaded_file = $ request-> files-> get('foo',array(),true);不幸的是它不工作。 – Reveclair 2013-02-14 11:42:37

+0

請使用app_dev.php主控制器並檢查螢火蟲導致500錯誤的原因 – l3l0 2013-02-14 12:43:48

+0

好的,我找到了問題,感謝您的幫助!這很愚蠢,但我忘了在方法ajaxPictureUpload的末尾添加「Action」這個詞。 – Reveclair 2013-02-14 13:35:55

相關問題