これは私の実際の例です:
colModel:
[
{
name: 'photo1',
label: 'Фото1',
index: 'photo1',
search: false,
editable: true,
edittype: 'file',
editoptions: {
enctype: "multipart/form-data"
},
align: 'center',
},
],
次に、コールバックを使用しました:
afterSubmitCell: function (serverResponse, rowId, cellName, value, iRow, iCol) {
var fileCell = (+rowId + 1) + '_' + cellName;
var grid = $("#reports");
var fileContainer = document.getElementById(fileCell).files;
if (fileContainer !== null) {
if (fileContainer.length > 0) {
var file = fileContainer[0];
var form = new FormData();
form.append(cellName, file);
form.append('id', rowId);
$.ajax({
url: "/api/reports/save-file",
type: 'POST',
data: form,
processData: false,
contentType: false,
success: function (data) {
grid.jqGrid('setGridParam', {datatype: 'json'})
.trigger('reloadGrid', [{page: 1}]);
}
});
}
}
return [true, serverResponse]
},
そして、ファイルをバックエンド部分 (Laravel) に保存します。
if ($request->hasFile('photo1')) {
$file = $request->file('photo1');
if ($file->isValid()) {
$fileName = rand(1000, 9999) . "." . $file->getClientOriginalExtension();
//Put file on the server
if (!empty($report)) {
$report->attachFile($file, $fileName);
$report->photo1 = $fileName;
$response['status'] = $report->save();
}
}
}