저는 PHP로 매우 새롭기 때문에 (많은 HTML 경험이 없어도) 질문이 있습니다. 나는 두 개의 PHP 스크립트 (아래 참조)로 구성된 파일 업로드 시스템을 가지고있다. 파일 업로드 양식에서 사용자는 파일을 선택하고 폴더를 저장 한 다음 업로드합니다. 저장 위치는 업로드 디렉토리의 폴더로 구성된 드롭 다운 메뉴에서 선택할 수 있습니다. 하지만 드롭 다운 메뉴에는 다른 옵션이 있습니다. 사용자가 other
옵션을 선택하면 JavaScript로 완료된 새 필드가 나타나고 사용자는 수동으로 위치를 삽입 할 수 있습니다 (예 : 디렉토리가없고 사용자가 새 디렉토리를 만들려고하는 경우).PHP/HTML 업로드 스크립트가 제대로 작동하지 않습니다.
그러나 여기에 문제가 있습니다. 사용자가 미리 정의 된 폴더를 선택하면 모든 항목이 정상적으로 작동하지만 사용자가 필드에 디렉토리 이름을 쓰면 folder
이라는 폴더 만 생성됩니다. 예를 들어 사용자가 꽃에 대한 그림을 업로드하려고하고 flower
이라는 폴더가없는 경우 사용자는 other
을 선택하고 flower
을 상자에 씁니다. 그런 다음 업로드 버튼을 클릭하면 기본적으로 PHP는 flower
이라는 새 폴더를 만들고 거기에 그림을 업로드해야합니다. 그러나 현재 PHP는 folder
이라는 폴더를 만듭니다. 그리고 어떤 이유로 그곳에 사진이 업로드되지 않습니다 (아무데도 업로드되지 않았습니다). 스크립트와
내 문제 : 새로운 폴더가 생성되지 않습니다
- . 나는 그것이 "폴더"라는 두 가지 값을 갖고 있기 때문에 생각합니다. 그러나 "다른 것"이 선택되면 PHP는 마지막 값만 보입니다.
- 폴더가 만들어 지더라도 파일이 어떤 이유로 업로드되지 않습니다.
누구든지 내 문제에 대한 해결책을 찾고 해결할 수 있으면 정말 감사 할 것입니다. 그리고 영어가 최선이 아니기 때문에 추가 정보를 요청하는 것을 주저하지 마십시오.이 때문에 어떤 것을 이해할 수 없습니다.
미리 감사드립니다.
1 파일 : file-upload.php
:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script language="JavaScript" type="text/javascript">
<!--
function Toggle(obj){
var val=obj.value;
if (!obj.m){ obj.m=''; }
if (!obj.m.match(val)){ obj.m+=','+val+','; }
var hide=obj.m.split(',');
for (var zxc0=0;zxc0<hide.length;zxc0++){
if (document.getElementById(hide[zxc0])){
document.getElementById(hide[zxc0]).style.display='none';
}
}
var show=val.split(',');
for (var zxc1=0;zxc1<show.length;zxc1++){
if (document.getElementById(show[zxc1])){
document.getElementById(show[zxc1]).style.display='';
}
}
}
//-->
</script>
</head>
<body>
<h1>Upload</h1>
<form action="upload.php" method="post"
enctype="multipart/form-data"><br>
<label for="file">File:</label>
<input type="file" name="file" id="file" />
<br>
Tüüp: <select name="folder" value="folder" onchange="Toggle(this);">
<?php
foreach(glob('/uploadfolder/*', GLOB_ONLYDIR) as $dir)
{
$dir = basename($dir);
echo '<option value="', $dir, '">', $dir, '</option>';
}
?>
<option value="folder">other</option>
</select><br>
<input id="folder" value="Create a new folder" style="display:none;">
<input type="submit" name="submit" value="Upload" />
</form>
</body>
</html>
2 파일 : upload.php
:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body>
<h1>Upload</h1>
<br>
<?php
$dirname = $folder = $_POST["folder"];
$filename = "/uploadfolder/" . "$dirname" . "/";
if (!file_exists($filename)) {
mkdir("/uploadfolder/" . "$dirname", 0777);
}
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats- officedocument.spreadsheetml.sheet"))
&& ($_FILES["file"]["size"] < 5120000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Name: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />";
echo "Tmp. file: " . $_FILES["file"]["tmp_name"] . "<br />";
echo "Folder: " . $folder . "<br />";
if (file_exists("/uploadfolder/$folder/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"/uploadfolder/$folder/" . $_FILES["file"]["name"]);
echo "Saved: " . "" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Upload failed";
}
?>
</body>
</html>
현재 PHP에서
감사합니다. 귀하의 게시물 정말 도움이되었다, 내 대본이 거의 작동합니다. 그러나 여전히 한 가지 문제가 있습니다. 이미 목적지로 존재하는 폴더를 선택하면 모든 것이 정상적으로 파일이 해당 폴더에 업로드되지만, 드롭 다운 메뉴에서 "기타"를 선택한 다음 "travel"과 같이 수동으로 폴더 이름을 삽입하면 클릭합니다. "업로드", "폴더"라는 폴더가 생성됩니다. 어떤 이유로 수동으로 삽입 된 폴더 이름이 PHP에 의해 처리되지 않습니다. 무슨 문제인지 아십니까? – SomeOne
안녕하세요 mihkel93, 문제는 실제로 "기타"에 대한
확인. 고맙습니다!! – SomeOne