Редакция:
Я хочу использовать uploadify в laravel 4. Я застрял, так как я получаю только ошибку 500 Http, и я не выяснил, почему.
Итак, вот мой код:
Форма:
{{Form::open(array('action' => 'ProfileController@postUploadPicture2','files'=> true,'id'=>'uploadform2'))}}
{{ Form::file('file_upload',$attributes = array('id'=>'file_upload')) }}
{{ Form::token() }}
{{ Form::close() }}
Скрипт загрузки:
<script>
$(document).ready(function() {
var url = $("#uploadform2").attr('action');
setTimeout(function() {//referencias: http://stackoverflow.com/a/25135325/1883256
$('#file_upload').uploadify({
'fileTypeDesc' : 'Image Files',
'fileTypeExts' : '*.gif; *.jpg; *.png',
'debug' :'true',
'swf' : '../swf/uploadify.swf',
'uploader' : url, //debe redireccionar al controlador
'onFallback' : function() {
alert('Flash player no detected.');
},
'method' : 'post',
'width' : 150,//ancho del botón de browser
'buttonText' : 'Choose your file...',
'onUploadError' : function(file, errorCode, errorMsg, errorString) {
alert(':-( The file ' + file.name + ' could not be sent. There was the following error: ' + errorString + ' Mensaje: '+ errorMsg + ' código: '+errorCode + ' File: '+ file);
}
// Put your options here
});
},0);
});
</script>
Маршруты:
/*
*Upload user's picture AJAX (GET)
*/
Route::get('/edit/upload_picture2',array(
'as' => 'user-upload-photo2',
'uses' => 'ProfileController@getUploadPicture2'
));
/*
/Upload user's picture AJAX Uploadify (POST)
*/
Route::post('/edit/upload_picture2',array(
'as' => 'user-upload-photo-post2',
'uses' => 'ProfileController@postUploadPicture2'
));
И контроллер (в режиме тестирования), где я ожидаю показать мне сообщение:
public function postUploadPicture2(){
return 'posted and reached!';
}
Я получаю HTTP-ошибку 500 и код -200.
Отладочная информация показывает следующее:
Открытие загрузки:
---SWFUpload Instance Info---
Version: 2.2.0 2009-03-25
Movie Name: SWFUpload_0
Settings:
upload_url: http://localhost/cimmgm/public/edit/upload_picture2
flash_url: ../swf/uploadify.swf?preventswfcaching=1420936888141
use_query_string: false
requeue_on_error: false
http_success:
assume_success_timeout: 30
file_post_name: Filedata
post_params: [object Object]
file_types: *.gif; *.jpg; *.png
file_types_description: Image Files
file_size_limit: 0
file_upload_limit: 0
file_queue_limit: 999
debug: true
prevent_swf_caching: true
button_placeholder_id: file_upload
button_placeholder: Not Set
button_image_url: /cimmgm/public/edit/
button_width: 150
button_height: 30
button_text:
button_text_style: color: #000000; font-size: 16pt;
button_text_top_padding: 0
button_text_left_padding: 0
button_action: -110
button_disabled: false
custom_settings: [object Object]
Event Handlers:
swfupload_loaded_handler assigned: false
file_dialog_start_handler assigned: true
file_queued_handler assigned: true
file_queue_error_handler assigned: true
upload_start_handler assigned: true
upload_progress_handler assigned: true
upload_error_handler assigned: true
upload_success_handler assigned: true
upload_complete_handler assigned: true
debug_handler assigned: true
SWF DEBUG: SWFUpload Init Complete
SWF DEBUG:
SWF DEBUG: ----- SWF DEBUG OUTPUT ----
SWF DEBUG: Build Number: SWFUPLOAD 2.2.0
SWF DEBUG: movieName: SWFUpload_0
SWF DEBUG: Upload URL: http://localhost/cimmgm/public/edit/upload_picture2
SWF DEBUG: File Types String: *.gif; *.jpg; *.png
SWF DEBUG: Parsed File Types: gif,jpg,png
SWF DEBUG: HTTP Success: 0
SWF DEBUG: File Types Description: Image Files (*.gif; *.jpg; *.png)
SWF DEBUG: File Size Limit: 0 bytes
SWF DEBUG: File Upload Limit: 0
SWF DEBUG: File Queue Limit: 999
SWF DEBUG: Post Params:
SWF DEBUG: ----- END SWF DEBUG OUTPUT ----
SWF DEBUG:
Попытка загрузить файл:
SWF DEBUG: Event: fileDialogStart : Browsing files. Multi Select. Allowed file types: *.gif; *.jpg; *.png
SWF DEBUG: Select Handler: Received the files selected from the dialog. Processing the file list...
SWF DEBUG: Event: fileQueued : File ID: SWFUpload_0_0
SWF DEBUG: Event: fileDialogComplete : Finished processing selected files. Files selected: 1. Files Queued: 1
SWF DEBUG: StartUpload: First file in queue
SWF DEBUG: Event: uploadStart : File ID: SWFUpload_0_0
SWF DEBUG: ReturnUploadStart(): File accepted by startUpload event and readied for upload. Starting upload to http://localhost/cimmgm/public/edit/upload_picture2 for File ID: SWFUpload_0_0
SWF DEBUG: Event: uploadProgress (OPEN): File ID: SWFUpload_0_0
SWF DEBUG: Event: uploadProgress: File ID: SWFUpload_0_0. Bytes: 39446. Total: 39446
SWF DEBUG: Event: uploadError: HTTP ERROR : File ID: SWFUpload_0_0. HTTP Status: 500.
SWF DEBUG: Event: uploadComplete : Upload cycle complete.
Как я могу это исправить? Что мне не хватает?
Ваше имя маршрута здесь «user-upload-photo-post»
Route::post('/edit/upload_picture',array(
'as' => 'user-upload-photo-post',
'uses' => 'ProfileController@postUploadPicture'
));
пока я не вижу тэг формы в списке сообщений, которые отправляются на этот маршрут. Например.
Form::open(array('action'=>route('user-upload-photo-post'), 'method'='post'))
редактировать: ах понял, вы размещаете на той же странице. выложен ли токен CRF ??
Немного поздно, но если кто-то застрянет с той же проблемой, то это может помочь.
Uploadify использует объект flash, который имеет другой сеанс, поэтому токен csrf не работает. По этой причине Laravel возвращает ошибку 500 Http. Есть два способа преодоления, которые я пробовал: