我尝试将上传图片的路径添加到数据库中,以便将其显示为帖子的缩略图。我找到了一个教程,并使用此代码上传图像。然而,它进入了else语句,我只是得到退出("错误在服务器上上传图像时#34;);我有一张表格来收集数据:
public override OnAppearing(...) { this.backgroundimage.Source = null; }
public override OnDisappearing(..) { this.backgroundimage.Source = your ImageSource; }
以下是我用来上传图片的代码:
<form action='' method='post' enctype="multipart/form-data">
<p><label>Title</label><br />
<input id="title-input" type='text' name='postTitle' value='<?php if(isset($error)){ echo $_POST['postTitle'];}?>'></p>
<p><label>Description</label><br />
<textarea id="textarea" name='postDesc' cols='20' rows='5'><?php if(isset($error)){ echo $_POST['postDesc'];}?></textarea></p>
<p><label>Content</label><br />
<textarea name='postCont' cols='20' rows='5'><?php if(isset($error)){ echo $_POST['postCont'];}?></textarea></p>
<p><label>Image</label><input type="file" name="uploadedimage">
</p>
<input type='submit' name='submit' value='Submit'>
<input type='reset' name='submit' value='Reset'>
</form>
<?php include 'add-post-handler.php' ?>
PS:我也有一些疑问,我怎么能把imageID与postID相关联,因为它们都是从同一个表格中提交的。(我在两个表之间建立了关系,但它在主键,所以我不确定它是否正确)
感谢您的帮助!
答案 0 :(得分:1)
查看代码:
move_uploaded_file
在两个前提下返回FALSE(在PHP Docs中说明):
如果filename不是有效的上传文件,则不会执行任何操作,并且 move_uploaded_file()将返回FALSE。
如果filename是有效的上传文件,但某些文件无法移动 原因,不会发生任何操作,move_uploaded_file()将返回 假。此外,还会发出警告。
我最好的猜测是,根据您提供的信息:
确保应用程序(网络服务器)可以在您的路径中写入:&#39; ../ img /&#39;通过发出chmod为目录提供webserver用户的正确权限。
安全建议(与问题无关):
您的应用程序在此状态下具有$ target_path中的潜在SQLi。您应该考虑使用预准备语句
您的表单将POST数据直接写入输出。这导致了XSS。您应该始终在输出中编码特殊字符。
确保只能上传图片,并且无法在此图片中执行脚本。路径。有人可以利用您的上传来上传脚本并执行它。
在这种情况下阻止SQLi的最简单方法是对imagename进行哈希并使用$ext
变量设置扩展名:
[...]
$ext=GetImageExtension($imgtype);
if($ext === FALSE) {
exit("Couldn't determine the filetype correctly. Please upload pictures only.");
}
$imagename=md5($_FILES["uploadedimage"]["name"].time()).$ext;
$target_path = "../img/".$imagename;
[...]
仅包含时间(),因此有人可以上传具有相同名称的图片。
答案 1 :(得分:0)
你总是可以给你的图像一个特定的类,你知道它指向你想要缩略图的所有图像,并应用一个CSS规则/代码,它们会自动使它们成为img-thumbnail。
<div class="imgT">
然后设置CSS缩略图
答案 2 :(得分:0)
感谢大家的回答。最后我明白了。我发现问题出在php.ini设置中。这是帮助我的链接 - &gt; Why would $_FILES be empty when uploading files to PHP?。感谢PaulF发布它。问题是上传文件的限制只有2MB或类似的东西。 对于每个遇到相同问题的人,请确保检查该链接并在php.ini文件中检查此设置。
file_uploads = On
post_max_size = 100M
upload_max_filesize = 100M