我正在尝试使用Laravel 5.4进行AJAX图像上传。我的表单中的所有其他字段都在工作,但文件输入上的move()
函数除外,它返回500错误。我添加了与下图相关的所有代码。单击提交按钮后,我正在执行e.preventDefault()
,然后启动ajax功能。
HTML
{!! Form::open(['action' => 'ProjectController@store','id' => 'createForm','files' => true]) !!}
<div class="form-group">
{!! Form::label('image', 'Project Image') !!}
{!! Form::file('image') !!}
</div>
{!! Form::submit('Create', ['id' => 'createSubmit', 'class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
AJAX
var formData = new FormData($('#formElem'));
$.ajax({
url: '{{ route('project.store') }}',
type: 'post',
contentType: false,
processData: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: formData,
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
console.log(data);
}
});
PHP
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
$image_filename = 'feature-' . $image['name'];
// THIS LINE CAUSES THE 500 ERROR
// $image->move(public_path('uploads'), $image_filename);
}
VAR_DUMP OF $ _FILES [&#39; image&#39;]
array(5) {
["name"]=>
string(12) "Homepage.png"
["type"]=>
string(9) "image/png"
["tmp_name"]=>
string(23) "C:\xampp\tmp\php7AD.tmp"
["error"]=>
int(0)
["size"]=>
int(251159)
}
uploads文件夹确实存在。
答案 0 :(得分:2)
您获得了什么错误,可能与“uploads”文件夹的权限有关?
检查Laravel日志上的500错误详细信息。
您还可以在chrome Dev工具中查看错误详细信息。转到“网络”标签,按“XHR”过滤,点击应以红色突出显示的500错误,然后在顶部菜单中更改为“预览”标签。这应该给你详细的服务器错误。
答案 1 :(得分:1)
尝试上传图片:
$destinationPath = 'path/th/save/file/';
$image = $request->file('image');
$name = $user_meta['image_org_name'] = $image->getClientOriginalName();
$extension = $image->getClientOriginalExtension();
$file_name = md5(uniqid().time()).'_'.$user_meta['image_org_name'];
$image->move($destinationPath,$file_name);