我无法上传uploads文件夹中的文件。我没有使用公共文件夹,我删除了公共文件,并在根管理器中移动了Laravel的文件夹结构。
app
bootstrap
config
css
database
fonts
images
storage
tests
vendor
uploads
.env
.htaccess
index
我的AashishController.php
<?php
namespace App\Http\Controllers;
use Input;
use Mail;
class AashishController extends Controller
{
public function index()
{
return view('in');
}
public function contact()
{
return view('contact');
}
public function postcontact()
{
$name = \Input::get('name');
$email = \Input::get('email');
$phone = \Input::get('phone');
$message1 = \Input::get('message');
$file1 = Input::file('file1');
$userr=$file1;
//Create directory if it does not exist
if(!is_dir("uploads/".$userr."/")) {
mkdir("uploads/".$userr."/");
}
// Move the uploaded file
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/".$userr."/". $_FILES["file"]["name"]);
$to ="email@example.com";
$subject = "hi";
$mail_body = '<html>
<body bgcolor="#573A28" topmargin="25">
Put HTML content here with variables from PHP if you like
Variable display Example:
</body>
</html>';
$headers = "From:email@example.com";
$headers .= "Content-type: text/html";
mail($to, $subject, $mail_body, $headers);
return view('test')->with('name', $name);
}
}
如何从该目录中获取文件并将其传递给视图?
答案 0 :(得分:1)
你有任何错误吗?
您可能忘记了使用chmod 777向上传文件夹授予写入权限。
编辑:从mkdir路径中删除最后一个斜杠。
并确保$userr
变量包含dd($userr);
哦,我现在看到了。
1-您正在尝试发送对象而不是将字符串发送到mkdir函数。
2-即使我假设您正在尝试将文件名发送到mkdir,为什么还需要创建一个以该文件名命名的文件夹?只需使用时间戳或一些与rand(100,999)类似的随机值来创建子文件夹。
3-你的$ userr包含一个这样的对象:
object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
private 'test' => boolean false
private 'originalName' => string 'test.jpg' (length=22)
private 'mimeType' => string 'image/jpeg' (length=10)
private 'size' => int 667220
private 'error' => int 0
因此没有必要将它用作对象或甚至声明它。改为使用Input :: file('file1')。
public function postcontact()
{
$name = \Input::get('name');
$email = \Input::get('email');
$phone = \Input::get('phone');
$message1 = \Input::get('message');
$file1 = Input::file('file1');
$timestamp = time();
//Create directory if it does not exist
if(!is_dir("uploads/".$timestamp)) {
mkdir("uploads/".$timestamp);
}
$sitepath = $_SERVER['DOCUMENT_ROOT'];
// Move the uploaded file
Input::file('file1')->move($sitepath.'/uploads/'.$timestamp.'/', Input::file('file1')->getClientOriginalName());
$to ="email@example.com";
$subject = "hi";
$mail_body = '<html>
<body bgcolor="#573A28" topmargin="25">
Put HTML content here with variables from PHP if you like
Variable display Example:
</body>
</html>';
$headers = "From:email@example.com";
$headers .= "Content-type: text/html";
mail($to, $subject, $mail_body, $headers);
return view('test')->with('name', $name);
}
并且为了访问视图中文件夹的路径,我总是更喜欢使用这种风格:
$data['name'] = $name;
$data['filepath'] = "uploads/".$timestamp."/".Input::file('file1')->getClientOriginalName();
return view('test',$data);
在您的视图中,您可以使用刀片模板引擎::
访问这些变量name {{ $name }} <br />
filepath {{ $filepath }} <br />
或使用原始php变量:
name <?php echo $name; ?> <br />
filepath <?php echo $filepath; ?> <br />
答案 1 :(得分:0)
我猜你没有发送带有表格的文件,你的表格应该是:
{{ Form::open(["url"=>"/someurl", "files"=>true,])}
粘贴您发布数据的视图
您应该先检查文件类型,然后再将其移动到上传文件夹中。
而不是
$sitepath = $_SERVER['DOCUMENT_ROOT'];
使用
$sitepath = public_path();