PHP 正在上传图片
PHP uploading an image
我正在努力让 PHP 处理发布的图像。据称获得临时 link 的代码在这里:
$file = file_get_contents($_FILES["pic"]["name"]);
但我收到错误
Warning: file_get_contents(): Filename cannot be empty
图片肯定是作为 运行 发布的:
echo $_POST['pic'];
打印图像的名称。
我不确定我做错了什么?表单中的字段名称是 pic.
感谢您的帮助。
编辑:
图像将被上传到 Imgur。
编辑:
HTMl收录供参考:
<form class="form-horizontal" enctype="multipart/form-data" name="additem" role="form" method="POST" action="add.php">
<div class="alert alert-info" role="alert">Photos will be uploaded to <a href="http://imgur.com">imgur</a></div>
<div class="form-group">
<label for="dept">Department</label>
<select class="form-control" name="dept" id="dept">
<option>Options...</option>
</select>
</div>
<div class="form-group">
<label for="pic">Image link</label>
<input class="form-control" type="file" id="pic" name="pic"></input>
</div>
<div class="form-group">
<label for="description">Description</label>
<textarea class="form-control" rows="3" id="description" name="description"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Add</button>
</div>
</form>
根据 relevant comment in documentation,这些文件暂时 存储在您系统的某处。不过,name
只是一个字符串。
$file = file_get_contents($_FILES["pic"]['tmp_name']);
出于好奇:您是否在 input
控件上设置了 type='file'
?
$ext = pathinfo($_FILES['pic']['name'], PATHINFO_EXTENSION);
$filename = "./your-image.$ext";
if(move_uploaded_file($_FILES['pic']['tmp_name'], $filename)) {
$file = file_get_contents($filename);
}
根据 PHP docs (Handling file uploads),您可能想要访问文件的内容,而不是文件名。因此,您需要使用:
$filecontents = file_get_contents($_FILES['pic']['tmp_name']).
要上传文件,您需要添加
enctype="multipart/form-data"
作为表单标签的属性。
参考:PHP 5 File Upload
找到修复:
将 enctype 添加到表单和将 DOCTYPE 添加到标记的组合解决了这个问题。
感谢所有帮助过的人
我正在努力让 PHP 处理发布的图像。据称获得临时 link 的代码在这里:
$file = file_get_contents($_FILES["pic"]["name"]);
但我收到错误
Warning: file_get_contents(): Filename cannot be empty
图片肯定是作为 运行 发布的:
echo $_POST['pic'];
打印图像的名称。
我不确定我做错了什么?表单中的字段名称是 pic.
感谢您的帮助。
编辑:
图像将被上传到 Imgur。
编辑:
HTMl收录供参考:
<form class="form-horizontal" enctype="multipart/form-data" name="additem" role="form" method="POST" action="add.php">
<div class="alert alert-info" role="alert">Photos will be uploaded to <a href="http://imgur.com">imgur</a></div>
<div class="form-group">
<label for="dept">Department</label>
<select class="form-control" name="dept" id="dept">
<option>Options...</option>
</select>
</div>
<div class="form-group">
<label for="pic">Image link</label>
<input class="form-control" type="file" id="pic" name="pic"></input>
</div>
<div class="form-group">
<label for="description">Description</label>
<textarea class="form-control" rows="3" id="description" name="description"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Add</button>
</div>
</form>
根据 relevant comment in documentation,这些文件暂时 存储在您系统的某处。不过,name
只是一个字符串。
$file = file_get_contents($_FILES["pic"]['tmp_name']);
出于好奇:您是否在 input
控件上设置了 type='file'
?
$ext = pathinfo($_FILES['pic']['name'], PATHINFO_EXTENSION);
$filename = "./your-image.$ext";
if(move_uploaded_file($_FILES['pic']['tmp_name'], $filename)) {
$file = file_get_contents($filename);
}
根据 PHP docs (Handling file uploads),您可能想要访问文件的内容,而不是文件名。因此,您需要使用:
$filecontents = file_get_contents($_FILES['pic']['tmp_name']).
要上传文件,您需要添加
enctype="multipart/form-data"
作为表单标签的属性。 参考:PHP 5 File Upload
找到修复:
将 enctype 添加到表单和将 DOCTYPE 添加到标记的组合解决了这个问题。
感谢所有帮助过的人