【发布时间】:2018-08-03 12:42:29
【问题描述】:
是否可以在 PHP 中重命名文件名?我正在尝试这段代码,但它没有给我 .ext 我认为我的爆炸命令有问题。谁能帮帮我?
这是我的代码
$target = '..\img\web\users'.DIRECTORY_SEPARATOR;
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}else{
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = $user['email'] . '.' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], $target . $newfilename);
$q = "UPDATE users SET img ='$newfilename' WHERE email = '$user[email]'";
$r = mysqli_query($dbc, $q);
}
之后,它给了我 $newfilename = 'uploaded-file.'在我的 sql 表中没有扩展名。我的扩展在哪里:))
我正在尝试上传图像文件,并使用用户电子邮件地址进行更改。
编辑:我的输入是这样的 / 和 jquery:
<img id="img" alt="User Pic" <?php if($user['img'] == ''){ echo 'src="img/web/user.png"'; }else{ echo 'src="img/web/users/'.$user['img'].'"'; } ?> class="img-circle img-responsive" style="border:1px solid red; min-width:150px; min-height:150px; max-width:150px; max-height:150px;"><br />
<input id="avatar" name="file" type="file" class="btn btn-default btn-sm" style="padding:0px; margin:0px;" autocomplete="off" accept="image/x-png,image/gif,image/jpeg">
$('#save_details').on('click', function() {
var file_data = $('#avatar').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'admin/useredit.php', // point to server-side PHP script
dataType: 'text', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post'
});
});
$_FILES 的 var_dump:
array(1) {
["file"]=> array(5) {
["name"]=> string(9) "index.jpg"
["type"]=> string(10) "image/jpeg"
["tmp_name"]=> string(24) "C:\xampp\tmp\php7489.tmp"
["error"]=> int(0)
["size"]=> int(4465)
}
}
【问题讨论】:
-
我有点惊讶它没有用,在纸上看起来还不错(没有我运行/测试它)
-
move_uploaded_file 是否按预期工作?可能是“img”列不够大?
-
实际上,它给了我诸如未定义索引:文件,未定义索引:名称等错误。但也上传。我正在使用 jquery 文件上传(通过 ajax)
-
@IncredibleHat var_dump($_FILES); --> array(1) { ["file"]=> array(5) { ["name"]=> string(9) "index.jpg" ["type"]=> string(10) "image/ jpeg" ["tmp_name"]=> string(24) "C:\xampp\tmp\php7489.tmp" ["error"]=> int(0) ["size"]=> int(4465) } }
-
在我的 mysql 数据库中:img 列是 varchar --> 长度是 200。我认为足够了