Advertisement
rodro1

Ajax upload file jquery progressbar laravel

Feb 11th, 2020
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. // PHP
  2.  
  3.  
  4. public function upload_media_src($media_id, Request $request){
  5. // dd(request()->all());
  6. $media = \App\Media::find($media_id);
  7.  
  8. if($request->hasfile('file'))
  9. {
  10. // dd('working');
  11. $file = $request->file('file');
  12. $response = \App\Model::ajaxUploadFile($field_instance = $file, $save_title=$media->name, $path = 'uploads/media_srcs/', $class="");
  13.  
  14. return response()->json($response);
  15. }
  16.  
  17. }
  18.  
  19. public static function ajaxUploadFile($field_instance = null, $save_title='', $path = 'uploads/media_srcs/', $class=""){
  20. //dd($field_name);
  21. if($field_instance){
  22. // dd($field_instance);
  23. $extension = $field_instance->getClientOriginalExtension(); // getting image extension
  24. $filename = remove_space_dots_replace_underscore($save_title) . '_' . time() . mt_rand(1000, 9999) . '.'.$extension;
  25. $field_instance->move(public_path($path), $filename);
  26. $output = array(
  27. 'success' => 'Image uploaded successfully',
  28. 'image' => '<img src="/'.$path.'/'.$filename.'" class="'.$class.'" />',
  29. 'uploaded_name' => $filename
  30. );
  31. return $output;
  32. }
  33. return null;
  34. }
  35.  
  36. // JAVASCRIPT
  37. uploadAndAddToList.on("click", function(e) {
  38. e.preventDefault();
  39. // https://www.bladephp.co/file-upload-laravel5-using-ajax
  40.  
  41.  
  42.  
  43.  
  44. var progressBar = $('.progress-bar');
  45. var media_id = type_id_selector.attr('media_id');
  46. var selected_type_id = type_id_selector.children("option:selected").val();
  47.  
  48.  
  49.  
  50. console.log('working');
  51. // return;
  52. var extension = $('.file_src').val().split('.').pop().toLowerCase();
  53. if ($.inArray(extension, ['mp4']) == -1) {
  54. $('#errormessage').html('Please Select Valid File... ');
  55. } else {
  56.  
  57. var file_data = $('.file_src').prop('files')[0];
  58. // console.log(file_data);
  59. // var supplier_name = $('#supplier_name').val();
  60.  
  61.  
  62. var form_data = new FormData();
  63. // form_data.filterle = file_data;
  64. // form_data.file = file_data;
  65. // form_data.type_id = selected_type_id;
  66.  
  67. form_data.append("file", file_data);
  68. form_data.append("type_id", selected_type_id);
  69. // console.log(form_data);
  70. // return;
  71. // $.ajaxSetup({
  72. // headers: {
  73. // 'X-CSRF-Token': $('meta[name=_token]').attr('content')
  74. // }
  75. // });
  76.  
  77. // console.log(form_data);
  78. // $.post("/admin/medias/"+media_id+"/media_srcs", {file : form_data.file, type_id : selected_type_id}, function(data, textStatus, xhr) {
  79. // /*optional stuff to do after success */
  80. // });
  81.  
  82. $.ajax({
  83. url: "/admin/medias/"+media_id+"/media_srcs", // point to server-side PHP script
  84. method: 'post',
  85. data: form_data,
  86. processData: false,
  87. contentType: false,
  88. xhr: function() {
  89. var xhr = new window.XMLHttpRequest();
  90. xhr.upload.addEventListener("progress", function(evt) {
  91. if (evt.lengthComputable) {
  92. var percentComplete = (evt.loaded / evt.total) * 100;
  93. //Do something with upload progress here
  94. $('.progress-bar').text(percentComplete + '%');
  95. $('.progress-bar').css('width', percentComplete + '%');
  96. }
  97. }, false);
  98. return xhr;
  99. },
  100. // uploadProgress:function(event, position, total, percentComplete)
  101. // {
  102. // console.log(percentComplete);
  103. // $('.progress-bar').text(percentComplete + '%');
  104. // $('.progress-bar').css('width', percentComplete + '%');
  105. // },
  106. success: function(data) {
  107. progressBar.text('Uploaded');
  108. progressBar.css('width', '100%');
  109. progressBar.addClass('progress-bar-success');
  110. $('#errormessage').html('<span class="text-success"><b>'+data.success+'</b></span><br /><br />');
  111. // $('#success').append(data.image);
  112. save_to_database(selected_type_id, media_id, data);
  113. },
  114. errors: function(data) {
  115. progressBar.text('0%');
  116. progressBar.css('width', '0%');
  117. $('#errormessage').html('<span class="text-danger"><b>'+data.errors+'</b></span>');
  118. }
  119. });
  120. }
  121.  
  122. function save_to_database(selected_type_id, media_id, data){
  123. // console.log(data);
  124. var file_src_name = data.uploaded_name;
  125. $.post('/admin/medias/'+media_id+'/store/', {file_src: file_src_name, type_id : selected_type_id}, function(data, textStatus, xhr) {
  126. /*optional stuff to do after success */
  127. });
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement