我一直在写一个上传脚本,即使我使用了Laravel内置的函数Input::file(),它仍然返回null。我将发布我的家庭控制器代码。
public function handleUpload()
{
$user = Auth::user();
$username = $user->username;
$userId = $user->id;
$path_to_users = "users";
$user_profile_img = 'users/'.$username.$userId.'/'.$username.'image001.jpg';
$user_path_profile = "users/$username$userId";
$user_image_name = $username.'image001.jpg';
if(file_exists($path_to_users))
{
if(file_exists("$user_path_profile")){
$file = Input::file('profile')->move("$user_path_profile/", $user_image_name);
} else {
mkdir("$user_path_profile");
$file = Input::file('profile')->move("$user_path_profile/", $user_image_name);
}
} else {
mkdir("users");
mkdir("$user_path_profile");
$file = Input::file('profile')->move("$user_path_profile/", $user_image_name);
}
}
当我死的时候(var_dump(Input::file('profile ')))返回空值,这意味着它基本上没有把我的文件作为一个实际的文件。当我死的时候(var_dump(Input::get('profile')))它返回图像名称,这意味着我的上传脚本正在工作,但是Laravel后端失败了。这是真的吗,或者我只是错过了什么?
以下是我的HTML表单内容:
@if($user->id == $userProf->id)
<div class="fileUpload button-success pure-button">
<span>Upload</span>
<form action="{{action('HomeController@handleUpload')}}" method="POST" enctype="multipart/form-data">
<input type="file" name="profile" class="upload" />
</form>
</div>
@endif
5条答案
按热度按时间wkyowqbh1#
我遇到了同样的问题,意识到我遗漏了一些东西。确保你的表单能够上传文件。所以检查以下属性是否设置。添加CRSF保护。但是-你需要在表单顶部添加'files' =〉true,并再次确保你的标记包含enctype=“multipart/form-data”
szqfcxe22#
我在正常情况下也遇到了同样的问题。我忘了加上一句:
hrirmatl3#
我也遇到了同样的问题,意识到我在表单中遗漏了一些东西。使用内置的laravel表单,因为它会自动添加CRSF保护(参见http://laravel.com/docs/html)。无论如何-你需要在表单的顶部添加
'files' => true
-例如在刀片模板中,它可能看起来像:fkaflof64#
看看你的代码,它应该工作,所以看起来你有一个问题,在任何其他方面,甚至可能是你的视图。我刚刚建立了两个路由器测试它在这里:
你可以把它们作为一个基准,一步一步地让你的工作也一样。
7rfyedvj5#
请确保已在
php.ini
文件中启用file uploads
:我也遇到过同样的情况。这解决了我的问题。