![](/img/trans.png)
[英]How can i store the filepath of the file that i am uploading in my DB using CakePHP?
[英]Laravel 5.0 trying to save file and store filepath to db
我正在嘗試保存圖像並將其位置存儲到數據庫中,但是由於某些原因,當我從控制器中轉儲請求時,我總是得到null。 不知道我在做什么錯。
我的表格:
<form class="addorUpdateBlockItem" method="post" enctype="multipart/form-data">
<div class="input-group item">
<label for="content">label</label>
<input type="text" hidden name="item_type" value="image">
<input type="file" name="content" id="contentImageBlockId3" class="form-control">
<span class="input-group-btn">
<button type="submit" class="btn btn-default plus margin-top">opslaan</button>
</span>
</div>
</form>
現在在我的控制器中,我嘗試像這樣訪問請求中的圖像:
dd($request->input('content'));
結果為空
我執行轉儲的控制器方法
/**
* Add or Update a BlockItemContent to a BlockNewsletter item.
*
* @param $blockNewsletterPivotId
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function addOrUpdateBlockItemContent($blockNewsletterPivotId, Request $request)
{
if ($request->input('item_type') == "image") {
dd($request->hasFile('content'));
}
}
這導致錯誤
我忘記了所有通過ajax調用發生的事情,也許與它有關:
$(document).on('submit', '.addorUpdateBlockItem', function (e) {
e.preventDefault();
// Retrieve form data
let formData = new FormData();
let data = $(this).serializeArray();
$.each(data, function(index, field) {
formData.set(field.name, field.value);
});
$.ajax({
url: $(this).attr('action'),
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
if (data.data.actionType === 'update') {
$('.successMessage').html(data.data.item + ' succesvol bijgewerkt.');
}
if (data.data.actionType === 'insert') {
$('.successMessage').html(data.data.item + ' succesvol toegevoegd.');
}
$('.successMessage').show();
},
error: function(error) {
console.log(error);
}
});
});
在此處替換formdata部分:
let formData = new FormData();
let data = $(this).serializeArray();
$.each(data, function(index, field) {
formData.set(field.name, field.value);
});
有了這個:
let formData = new FormData($(this)[0]);
您可以使用$request->file('content')
訪問文件。
還檢查$request->hasFile('content')
,它應該返回true
。
你做這行:
$.ajax({
url: $(this).attr('action'),..
但是在您的表單中,您未指定任何操作:
<form class="addorUpdateBlockItem" method="post" enctype="multipart/form-data">
因此,嘗試執行此操作,讓我看看您的dd結果:
<form class="addorUpdateBlockItem" action="{{ route('your_upload_route') }}" method="post" enctype="multipart/form-data">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.