Загрузите документ Word с произвольным именем, используя laravel 8, ajax и библиотеку PhpWord.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрузите документ Word с произвольным именем, используя laravel 8, ajax и библиотеку PhpWord.

Сообщение Anonymous »

Я пытаюсь загрузить документ Word из пути хранения, используя вызов Laravel8 и Ajax.
Я использую следующий код:

Код: Выделить всё

$(document).on('click', '.download', function(){

var data = '';
var id = $(this).attr('id');
console.log(id);
var data = '';

$.ajax({

url:"modeles_contrat/"+id+"/download",

type:"GET",
data: data,

xhrFields: {
responseType: 'blob'
},

success: function(response) {
var blob = new Blob([response]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "casting.docx";
link.click();
},

error: function() {
$('#responseMsg').removeClass("alert-success");
$('#responseMsg').addClass("alert-danger");
$('#responseMsg').html('Veuillez générer le contrat');
$('#responseMsg').show();
}
})
});

И следующий контроллер:

Код: Выделить всё

public function download($id, $downloadName = null) {
$data2 = array();

$data_modele = Model_Contrat::where('id_modele_contrat',$id)->first();

$filename= $data_modele->fichier;
$filepath = 'Casting_V0.1_Test\casting\storage\app\public\uploads\modeles_contrat/'.$filename;

/*  $filepath = str_replace('', '/',public_path('Model/'.$filename.'.docx'));
*/

if (file_exists($filepath)) {
$headers = array(
'Content-Type: application/docx',
);

$downloadName = $downloadName??$filename;
return Response::download($filepath);
} else {
$data2['success'] = 2;
$data2['message'] = 'File not uploaded.';

return response()->json($data2);
}
}
Файл работает, но проблема в том, что все файлы скачиваются с именем casting.docx. Я хочу загрузить каждый файл с его оригинальным именем, а не с именем casting.docx.
Если у вас есть идеи о том, как я могу загружать файлы с собственным именем, помогите мне. .
Заранее спасибо
ИЗМЕНИТЬ
Я пытался удалить вызов ajax. Поэтому я использую следующий код:
В свою таблицу данных я добавил ссылку на столбец, чтобы получить идентификатор строки:

Код: Выделить всё

$button .='[url=/modeles_contrat/]id_modele_contrat.'"/download" class="btn btn-xs btn-info pull-right" data_id="'.$data->id_modele_contrat.'" >Télécharger[/url]';
И на моем маршруте есть следующий маршрут:

Код: Выделить всё

Route::group(['middleware' => ['auth','role:account_manager|admin|manager_de_filiale']], function() {
Route::get('/modeles_contrat/{id_modele_contrat}/download', [App\Http\Controllers\ModeleController::class, 'download']);
});
И в моем контроллере есть следующий код:

Код: Выделить всё

public function download($id_modele_contrat) {
$data2 = array();
$data_modele = Model_Contrat::where('id_modele_contrat',$id_modele_contrat)->first();

$filename = $data_modele->fichier;
$filepath = 'Casting_V0.1_Test\casting\storage\app\public\uploads\modeles_contrat/'.$filename;

/*  $filepath = str_replace('', '/',public_path('Model/'.$filename.'.docx'));
*/

if (file_exists($filepath)) {
$headers = array(
'Content-Type: => application/docx',
);
return Response::download($filepath,$filename, $headers);
}
}
Итак, теперь, когда я нажимаю на ссылку для загрузки файла, я получаю следующую страницу, но файл не загружается:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/693 ... rd-library
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как конвертировать документ Word в PDF с помощью PHPWord
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать документ Word в PDF с помощью phpword
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • PHPWord — класс «PhpOffice\PhpWord\Media» не найден после установки zip-файлов из GitHub
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • PHPWord - класс «PhpOffice\PhpWord\Media» не найден после установки zip-файлов из GitHub [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Автоматически загружать панель задач во вновь созданном документе Word из существующего документа Word в проекте Word, д
    Anonymous » » в форуме C#
    0 Ответы
    160 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»