我可以在远程服务器上上传文件,而不是本地 XAMPP
I can upload files on remote server, not locally on XAMPP
我使用此脚本上传图像文件。它应该允许上传 jpeg、jpg 和 png 文件。
在远程服务器上一切正常,但我无法在 XAMPP 服务器上本地上传。我尝试了此线程中提到的所有技巧 Why would $_FILES be empty when uploading files to PHP?,但没有一个奏效。
感谢帮助
表格:
<form class="form-horizontal" action="potwierdz.php" method="POST" enctype="multipart/form-data">
<fieldset>
<!-- Form Name -->
<legend>Dodawanie produktu</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="produkt_nazwa">Nazwa</label>
<div class="col-md-4">
<input id="produkt_nazwa" name="produkt_nazwa" class="form-control input-md" required="" type="text">
<span class="help-block">Podaj nazwę produktu</span>
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="producent_nazwa">Nazwa producenta</label>
<div class="col-md-4">
<input id="producent_nazwa" name="producent_nazwa" class="form-control input-md" required="" type="text">
<span class="help-block">Podaj nazwę producenta produktu</span>
</div>
</div>
<!-- Textarea -->
<div class="form-group">
<label class="col-md-4 control-label" for="producent_adres">Adres producenta</label>
<div class="col-md-4">
<textarea class="form-control" id="producent_adres" name="producent_adres" required=""></textarea>
</div>
</div>
<!-- Select Basic -->
<div class="form-group">
<label class="col-md-4 control-label" for="produkt_kategoria_nazwa">Kategoria</label>
<div class="col-md-4">
<select id="produkt_kategoria_nazwa" name="produkt_kategoria_nazwa" class="form-control">
<option> </option>
</select>
</div>
</div>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="obraz">Zdjęcie</label>
<div class="col-md-4">
<input id="obraz" name="obraz" class="input-file" type="file">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="wyslij"></label>
<div class="col-md-4">
<button id="wyslij" name="wyslij" class="btn btn-primary">Dodaj</button>
</div>
</div>
</fieldset>
</form>
这是脚本:
<?php
$errors= array();
$file_name = $_FILES['obraz']['name'];
$file_size =$_FILES['obraz']['size'];
$file_tmp =$_FILES['obraz']['tmp_name'];
$file_type=$_FILES['obraz']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['obraz']['name'])));
$expensions= array("jpeg","jpg","png");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"obrazki/".$file_name);
echo "Success";
}else{
print_r($errors);
}
?>
它 returns 我“不允许扩展,请选择 JPEG 或 PNG 文件。”
也在打印
注意:未定义索引:obraz
每当我使用 $_FILES['obraz']['...']
变量时。
我会在您分配 $file_name
、$file_type
等变量时进行验证。
验证示例:
if (!isset($_FILES['obraz']['name'])) {
throw new \Exception('Missing file name)";
}
此外,我会使用 array_pop()
而不是 end
。这只是在分解后简单地为您提供数组中的最后一个元素。
那个,我会 trim 您的 $file_ext
变量中的任何潜在空白,因为空白可能是一个潜在的问题(甚至可能导致您的问题):
$file_pieces = explode('.',$_FILES['obraz']['name']);
$file_ext = trim(array_pop($file_pieces));
最后,在您的验证过程中,我会创建一个更具描述性的错误;一个回应 $file_ext
:
if (in_array($file_ext,$expensions) === false){
$errors[] = "extension '$file_ext' not allowed, please choose a JPEG or PNG file.";
}
如果您仍然遇到问题,请执行 var_dump($_FILES)
或 print_r($_FILES)
以确保正确提取文件名。如果这不起作用,请检查以确保您的环境已配置并正常工作。
此行在 PHP5.6 & PHP5.5 & PHP 5.4 中生成错误,在 PHP7.0.5
中生成通知
Strict standards: Only variables should be passed by reference
$file_ext=strtolower(end(explode('.',$_FILES['obraz']['name'])));
替换为
$t = explode('.',$_FILES['obraz']['name']);
$file_ext = strtolower($t[1]);
或者,如果您使用的是 PHP7,那么您可以使用
$file_ext = strtolower(explode('.',$_FILES['obraz']['name'])[1]);
我使用此脚本上传图像文件。它应该允许上传 jpeg、jpg 和 png 文件。
在远程服务器上一切正常,但我无法在 XAMPP 服务器上本地上传。我尝试了此线程中提到的所有技巧 Why would $_FILES be empty when uploading files to PHP?,但没有一个奏效。
感谢帮助
表格:
<form class="form-horizontal" action="potwierdz.php" method="POST" enctype="multipart/form-data">
<fieldset>
<!-- Form Name -->
<legend>Dodawanie produktu</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="produkt_nazwa">Nazwa</label>
<div class="col-md-4">
<input id="produkt_nazwa" name="produkt_nazwa" class="form-control input-md" required="" type="text">
<span class="help-block">Podaj nazwę produktu</span>
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="producent_nazwa">Nazwa producenta</label>
<div class="col-md-4">
<input id="producent_nazwa" name="producent_nazwa" class="form-control input-md" required="" type="text">
<span class="help-block">Podaj nazwę producenta produktu</span>
</div>
</div>
<!-- Textarea -->
<div class="form-group">
<label class="col-md-4 control-label" for="producent_adres">Adres producenta</label>
<div class="col-md-4">
<textarea class="form-control" id="producent_adres" name="producent_adres" required=""></textarea>
</div>
</div>
<!-- Select Basic -->
<div class="form-group">
<label class="col-md-4 control-label" for="produkt_kategoria_nazwa">Kategoria</label>
<div class="col-md-4">
<select id="produkt_kategoria_nazwa" name="produkt_kategoria_nazwa" class="form-control">
<option> </option>
</select>
</div>
</div>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="obraz">Zdjęcie</label>
<div class="col-md-4">
<input id="obraz" name="obraz" class="input-file" type="file">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="wyslij"></label>
<div class="col-md-4">
<button id="wyslij" name="wyslij" class="btn btn-primary">Dodaj</button>
</div>
</div>
</fieldset>
</form>
这是脚本:
<?php
$errors= array();
$file_name = $_FILES['obraz']['name'];
$file_size =$_FILES['obraz']['size'];
$file_tmp =$_FILES['obraz']['tmp_name'];
$file_type=$_FILES['obraz']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['obraz']['name'])));
$expensions= array("jpeg","jpg","png");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"obrazki/".$file_name);
echo "Success";
}else{
print_r($errors);
}
?>
它 returns 我“不允许扩展,请选择 JPEG 或 PNG 文件。”
也在打印
注意:未定义索引:obraz
每当我使用 $_FILES['obraz']['...']
变量时。
我会在您分配 $file_name
、$file_type
等变量时进行验证。
验证示例:
if (!isset($_FILES['obraz']['name'])) {
throw new \Exception('Missing file name)";
}
此外,我会使用 array_pop()
而不是 end
。这只是在分解后简单地为您提供数组中的最后一个元素。
那个,我会 trim 您的 $file_ext
变量中的任何潜在空白,因为空白可能是一个潜在的问题(甚至可能导致您的问题):
$file_pieces = explode('.',$_FILES['obraz']['name']);
$file_ext = trim(array_pop($file_pieces));
最后,在您的验证过程中,我会创建一个更具描述性的错误;一个回应 $file_ext
:
if (in_array($file_ext,$expensions) === false){
$errors[] = "extension '$file_ext' not allowed, please choose a JPEG or PNG file.";
}
如果您仍然遇到问题,请执行 var_dump($_FILES)
或 print_r($_FILES)
以确保正确提取文件名。如果这不起作用,请检查以确保您的环境已配置并正常工作。
此行在 PHP5.6 & PHP5.5 & PHP 5.4 中生成错误,在 PHP7.0.5
中生成通知Strict standards: Only variables should be passed by reference
$file_ext=strtolower(end(explode('.',$_FILES['obraz']['name'])));
替换为
$t = explode('.',$_FILES['obraz']['name']);
$file_ext = strtolower($t[1]);
或者,如果您使用的是 PHP7,那么您可以使用
$file_ext = strtolower(explode('.',$_FILES['obraz']['name'])[1]);