2012-02-27 13 views
2

私は数ヶ月間アップロードサイトを開発しています。サイトで最も要求の多い機能は複数ファイルアップローダーのためのものです。私は個人的にこの機能をしかし、純粋なPHP/HTMLアップロードツールをどのようにコードするのか分かりませんので、私はこれを行うことを可能にする既に利用可能なスクリプトを探しています。PHPでの複数ファイルのアップロード

私は、これはしかし、私はそれが次の操作を行うことができるかどうかを確認したかったまともなスクリプトのように思える、SWFUploadのに出くわした:

- >私は拡張子をアップロードすることが許可されているファイルを選択することを許可します。 - >アップロードするファイルの最大量を設定できます。 - >すべてのアップロードをログに記録してアカウントに割り当てると、私はMySQLのクエリのポストアップロードを実行できます

このようなスクリプトには多くの柔軟性が必要ですが、SWFUploadはスクリプトを柔軟に変更できないようです私が欲しいものにしているので、現在単一のファイルアップローダーを複数のファイルアップローダーに変換するほうが簡単かどうかを尋ねています。

<input name="files[]" type="file" multiple="multiple" /> 

そして、あなたのブラウザが自動的に行います。

あなたは、現代のブラウザでsomethnigを作るために満足している場合にのみ、あなたは、単にあなたのフォームは次のように見えるようにすることができ ジェイク

+0

私はUploadifyが好きで、自分で使っています。私はあなたが望むなら、いくつかのMIMEチェックコードを提供することができます。 –

+0

ありがとう@あなたの返信のために、それは非常に便利です!はい、私は自分でスクリプトを変更しようとしましたが、複数のファイルをアップロードできるようにコードを変更することからどこから始めたらいいかわかりません。 PHPの関数と私をリンクさせてください。そうすれば使用する必要があります。古いブラウザを使用している人には、単一のファイルアップローダを提供します。 ありがとう –

答えて

5

、お時間をいただき、ありがとうございますフロントエンドのために休んでください。

すでにファイルをアップロードできる場合は、複数のファイルをアップロードするために多くの変更を行う必要はありません。今の作業をループしてください。 print_r($ _ FILES)は構造体を表示します。

ファンシーなフロントエンドをお望みなら、Uploadifyをお勧めします。これはjQueryでうまく動作します。

+0

ありがとう、私は基本的にすべてのアップロードプロセスをループしたいですか?私が使用しているスクリプトをアップロードするのは非常に複雑に思えますが、購入した人は不明ですが、ループを追加しようとした無数の時間は単に失敗しました。私はこれをもう一度見て、あなたに戻ってきます。 –

+0

さて、プロセス全体ではなく、print_r($ _ FILES)を実行していくつかのファイルをアップロードすると、それらが配列内にどのように構造化されているかがわかります。 – 472084

2

以前はMaian Uploaderを使用していましたが、これは非常に柔軟です。人がアップロードできるファイルの種類、ファイルサイズの制限、アップロードする複数のファイルの選択などを指定できます。ページhttp://www.maianscriptworld.co.uk/free-php-scripts/maian-uploader/free-file-upload-system/index.htmlへのリンクはこちらです。

デザインは美しいものですが、好みに合わせてカスタマイズすることができます。最初にデモをチェックしたいかもしれませんhttp://www.maianscriptworld.com/demos/uploader/。ログインするだけで、左側のアップロードセクションに移動してチェックアウトします。

+0

ありがとうございます、私はあまりにも膨大なものは欲しくない、このスクリプトは、画像を適度にするためのAdmin Panelを既に持っているので、私が使用することのないたくさんの機能を提供しています。ありがとう! –

+2

心配はいりません!以下のJleagleが言及しているUploadifyは、かなり正当なものだと思っています... http://tutorialzine.com/2011/09/html5-file-upload-jquery-php/ HTML5のドラッグ&ドロップチュートリアルもありますが、あなたが探しているものではないかもしれません。おそらく他のファイルタイプをサポートするように変更することもできます。ここにあなたが心に持っていたもののように見えるもう一つのものがありますhttp://www.plupload.com/ – ItsMIllerTime65

0

あなたは、アップロードされた画像が格納される「アップロード」という名前のフォルダと一緒にこれらの4つのファイルをインクルードする必要があります。

multiupload.php

<html> 
<head> 
<title>Upload Multiple Images Using jquery and PHP</title> 
<!-------Including jQuery from Google ------> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script src="script.js"></script> 
<!------- Including CSS File ------> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<body> 
<div id="maindiv"> 
<div id="formdiv"> 
<h2>Multiple Image Upload Form</h2> 
<form enctype="multipart/form-data" action="upload.php" method="post"> 
First Field is Compulsory. Only JPEG,PNG,JPG Type Image Uploaded. Image Size Should Be Less Than 100KB. 
<div id="filediv"><input name="file[]" type="file" id="file"/></div> 
<input type="button" id="add_more" class="upload" value="Add More Files"/> 
<input type="submit" value="Upload File" name="submit" id="upload" class="upload"/> 
</form> 
<!------- Including PHP Script here ------> 
<?php include "connect.php"; ?> 
<?php include "upload.php"; ?> 

</div> 
</div> 
</body> 
</html> 

upload.php

<?php include "connect.php"; ?> 


<?php 
if (isset($_POST['submit'])) { 
$j = 0;  // Variable for indexing uploaded image. 
$target_path = "uploads/";  // Declaring Path for uploaded images. 
for ($i = 0; $i < count($_FILES['file']['name']); $i++) { 
// Loop to get individual element from the array 
$validextensions = array("jpeg", "jpg", "png","pdf","gif","doc","docx","txt","bmp");  // Extensions which are allowed. 
$ext = explode('.', basename($_FILES['file']['name'][$i])); // Explode file name from dot(.) 
$file_extension = end($ext); // Store extensions in the variable. 
//$target_path = $target_path . md5(md5(uniqid())) . "." . $ext[count($ext) - 1];  // Set the target path with a new name of image. 
$j = $j + 1;  // Increment the number of uploaded images according to the files in array. 
if (($_FILES["file"]["size"][$i] < 20000000)  // Approx. 100kb files can be uploaded. 
&& in_array($file_extension, $validextensions)) { 
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], "uploads/".$_FILES['file']['name'][$i])) { 

    //if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) { <!----For file uploading with actual name-> 

// If file moved to uploads folder. 
echo $imagename=basename($_FILES['file']['name'][$i]); 
echo $imagetmp="uploads/" . $imagename; 

//Insert the image name and image content in image_table 
$insert_image="INSERT INTO `image_table`(`image_name`, `image_content`) VALUES('$imagetmp','$imagename')"; 

mysql_query($insert_image); 


echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>'; 
} else {  // If File Was Not Moved. 
echo "not inserted in db"; 
echo $j. ').<span id="error">please try again!.</span><br/><br/>'; 
} 
} else {  // If File Size And File Type Was Incorrect. 
echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>'; 
} 


} 

} 
?> 

script.js

var abc = 0;  // Declaring and defining global increment variable. 
$(document).ready(function() { 
// To add new input file field dynamically, on click of "Add More Files" button below function will be executed. 
$('#add_more').click(function() { 
$(this).before($("<div/>", { 
id: 'filediv' 
}).fadeIn('slow').append($("<input/>", { 
name: 'file[]', 
type: 'file', 
id: 'file' 
}), $("<br/><br/>"))); 
}); 
// Following function will executes on change event of file input to select different file. 
$('body').on('change', '#file', function() { 
if (this.files && this.files[0]) { 
abc += 1; // Incrementing global variable by 1. 
var z = abc - 1; 
var x = $(this).parent().find('#previewimg' + z).remove(); 
$(this).before("<div id='abcd" + abc + "' class='abcd'><img id='previewimg" + abc + "' src=''/></div>"); 
var reader = new FileReader(); 
reader.onload = imageIsLoaded; 
reader.readAsDataURL(this.files[0]); 
$(this).hide(); 
$("#abcd" + abc).append($("<img/>", { 
id: 'img', 
src: 'x.jpg', 
alt: 'delete' 
}).click(function() { 
$(this).parent().parent().remove(); 
})); 
} 
}); 
// To Preview Image 
function imageIsLoaded(e) { 
$('#previewimg' + abc).attr('src', e.target.result); 
}; 
$('#upload').click(function(e) { 
var name = $(":file").val(); 
if (!name) { 
alert("First Image Must Be Selected"); 
e.preventDefault(); 
} 
}); 
}); 

スタイル。CSSこのコードを使用することにより

@import "http://fonts.googleapis.com/css?family=Droid+Sans"; 
form{ 
background-color:#fff 
} 
#maindiv{ 
width:960px; 
margin:10px auto; 
padding:10px; 
font-family:'Droid Sans',sans-serif 
} 
#formdiv{ 
width:500px; 
float:left; 
text-align:center 
} 
form{ 
padding:40px 20px; 
box-shadow:0 0 10px; 
border-radius:2px 
} 
h2{ 
margin-left:30px 
} 
.upload{ 
background-color:red; 
border:1px solid red; 
color:#fff; 
border-radius:5px; 
padding:10px; 
text-shadow:1px 1px 0 green; 
box-shadow:2px 2px 15px rgba(0,0,0,.75) 
} 
.upload:hover{ 
cursor:pointer; 
background:#c20b0b; 
border:1px solid #c20b0b; 
box-shadow:0 0 5px rgba(0,0,0,.75) 
} 
#file{ 
color:green; 
padding:5px; 
border:1px dashed #123456; 
background-color:#f9ffe5 
} 
#upload{ 
margin-left:45px 
} 
#noerror{ 
color:green; 
text-align:left 
} 
#error{ 
color:red; 
text-align:left 
} 
#img{ 
width:17px; 
border:none; 
height:17px; 
margin-left:-20px; 
margin-bottom:91px 
} 
.abcd{ 
text-align:center 
} 
.abcd img{ 
height:100px; 
width:100px; 
padding:5px; 
border:1px solid #e8debd 
} 
b{ 
color:red 
} 

、あなたが複数の画像をアップロードした画像は、三つのフィールドIDが存在しているあなたは、データベース内のテーブルを作成する必要があり、その目的too.Forデータベースに保存されることができ、イメージ名image_contentです。

関連する問題