在我本地XAMPP服务器上传文件但上传到我的网络服务器时,这个确切的代码可以正常工作。同一项目的其他功能仍然可以正常工作。
//Image Uploading
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_ext = explode('.', $file_name);
$file_ext = strtolower(end($file_ext));
$allowed = array('png', 'jpg', 'jpeg');
if(in_array($file_ext, $allowed)) {
$file_name_new = $username.'.png';
$file_dest = '../images/'.$file_name_new;
if($file_error > 0){
echo "There was an error uploading this image! Try another.";
} else {
if(move_uploaded_file($file_tmp, $file_dest)) {
header("Location: ../user/editprofile.php?user=".$username);
}
}
}
}
HTML位
<h2>Profile Image</h2>
<form action="editprofile.php?user=<?php echo $user; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
答案 0 :(得分:1)
首先,我pathinfo获取上传文件的文件名和文件扩展名。其次,您应该通过比较$_FILES['userfile']['type']
中的mimetypes列表来验证mimetype而不是扩展,对于这种情况,您需要检查['image/png', 'image/jpeg']
以防止某人上传类似PHP脚本的内容jpg扩展。您可能还希望保留上传文件的扩展名,而不是将它们全部设为png,因为这可能会导致意外错误。
将信息放在$file_error
内,让您确切知道文件未上传的原因。你会得到一个file error code来告诉你出了什么问题。
这将是其中之一:
UPLOAD_ERR_INI_SIZE
价值:1;上传的文件超出了php.ini中的upload_max_filesize指令。UPLOAD_ERR_FORM_SIZE
价值:2;上载的文件超出了HTML表单中指定的MAX_FILE_SIZE指令。UPLOAD_ERR_PARTIAL
价值:3;上传的文件仅部分上传。UPLOAD_ERR_NO_FILE
价值:4;没有上传文件。UPLOAD_ERR_NO_TMP_DIR
价值:6;缺少临时文件夹。在PHP 5.0.3中引入。UPLOAD_ERR_CANT_WRITE
价值:7;无法将文件写入磁盘。在PHP 5.1.0中引入。UPLOAD_ERR_EXTENSION
价值:8; PHP扩展程序停止了文件上载。 PHP没有提供确定哪个扩展名导致文件上传停止的方法;使用phpinfo()检查加载的扩展名列表可能有所帮助。在PHP 5.2.0中引入。共享托管上最常见的是您要上传到的文件的权限不正确(值7)。
答案 1 :(得分:0)
我认为这是上传的目录权限问题。只需更改目录权限模式,如下所示:
textview.setText((Html.fromHtml("<strike>hello world!</strike>")));