PHP

2011-12-13 17 views
21

का उपयोग कर छवि अपलोड करने से पहले छवि आयाम (ऊंचाई और चौड़ाई) की जांच करें PHP का उपयोग करके छवि अपलोड करने से पहले मैं ऊंचाई और चौड़ाई की जांच कैसे कर सकता हूं।PHP

क्या मुझे पहले छवि अपलोड करनी चाहिए और "getimagesize()" का उपयोग करना चाहिए? या क्या मैं इसे PHP का उपयोग करके अपलोड करने से पहले देख सकता हूं?

<?php 

foreach ($_FILES["files"]["error"] as $key => $error) { 
if(
$error == UPLOAD_ERR_OK 
&& $_FILES["files"]["size"][$key] < 500000 
&& $_FILES["files"]["type"][$key] == "image/gif" 
|| $_FILES["files"]["type"][$key] == "image/png" 
|| $_FILES["files"]["type"][$key] == "image/jpeg" 
|| $_FILES["files"]["type"][$key] == "image/pjpeg" 
){ 


$filename = $_FILES["files"]["name"][$key]; 








if(HOW TO CHECK WIDTH AND HEIGHT) 
{ 
echo '<p>image dimenssions must be less than 1000px width and 1000px height'; 
} 


} 







?> 
+5

के लिए यह काम आप पीएचपी कि सर्वर पर अपलोड नहीं किया गया है का उपयोग कर एक फ़ाइल की जाँच नहीं कर सकते। अगर इसे PHP होना है, तो यह संभव नहीं है। – deceze

+1

मान लीजिए मुझे इसे अपलोड करना होगा, और अगर यह 1000px से अधिक हो तो इसे "अनलॉक करें" :) या जावास्क्रिप्ट का उपयोग करें यदि मैं इसे एक विकल्प बना सकता हूं। – Hakan

उत्तर

4

वास्तविक अपलोड होने से पहले आपको क्लाइंट पर निष्पादित कुछ की आवश्यकता है।
(सर्वर-साइड) php के साथ आप फ़ाइल अपलोड होने के बाद या upload hooksशायद के साथ छवि अपलोड होने पर (छवि फ़ाइल शीर्षलेख डेटा से) आयाम के बाद आयाम की जांच कर सकते हैं।

तो अपने विकल्पों को फ्लैश, जावा एप्लेट-, Silverlight, कर रहे हैं, हो सकता है html5 अपने FileAPI साथ (परीक्षण नहीं किया है कि, हो सकता है कि संभव नहीं है) ...

5

फ़ाइल (क्योंकि यह एक मल्टीपार्ट रूप में चयनित किया गया है) $_FILES सरणी में है, तो यह पहले से ही सर्वर (/ tmp या इसी तरह की फ़ाइल पथ के लिए आमतौर पर) पर अपलोड कर दिया गया है ताकि आप बस आगे जा सकते हैं और आयाम प्राप्त करने के लिए getimagesize() फ़ंक्शन में फ़ंक्शन का उपयोग करें (सरणी के रूप में सभी विवरण सहित)।

0
array getimagesize (string $filename [, array &$imageinfo ]) 

getimagesize() फ़ंक्शन होगा किसी दिए गए छवि फ़ाइल का आकार निर्धारित करें और फ़ाइल प्रकार के साथ आयामों को वापस करें और एक सामान्य HTML IMG टैग और संवाददाता HTTP सामग्री प्रकार के अंदर उपयोग करने के लिए ऊंचाई/चौड़ाई टेक्स्ट स्ट्रिंग को वापस करें।

अधिक अद्यतन यात्रा साइट के लिए: http://www.php.net/manual/en/function.getimagesize.php

8

यह मैं कैसे इसे हल है।

$test = getimagesize('../bilder/' . $filnamn); 
$width = $test[0]; 
$height = $test[1]; 

if ($width > 1000 || $height > 1000) 
{ 
echo '<p>iamge is to big'; 
unlink('../bilder/'.$filnamn); 
} 
+1

क्यों छवि के बाद जांच पहले ही अपलोड हो चुकी है? और उसके बाद फिर से अनलिंक करने के लिए समय बिताएं –

74

हम इसे आसानी से temp फ़ाइल के साथ कर सकते हैं।

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]); 
$image_width = $image_info[0]; 
$image_height = $image_info[1]; 
+6

यह उत्तर निश्चित रूप से स्वीकार किया जाना चाहिए। – igaurav

+0

हां यह उत्तर स्वीकार किया जाना चाहिए .... –

+0

@ हकन क्या आप इसे स्वीकृत उत्तर के रूप में बना सकते हैं? – Tharanga

3

चौड़ाई और छवि उपयोग getimagesize(path_name) की ऊंचाई प्राप्त करने के लिए, इस समारोह सरणी जो ऊंचाई, चौड़ाई, image_type निरंतर और अन्य छवि से संबंधित जानकारी शामिल हैं देता है। निम्नलिखित कोड से आप इसे प्राप्त कर सकते हैं।

नोट - छवि के अस्थायी स्थान गुजरती हैं, और कोड का निम्न भाग का उपयोग करने की आवश्यकता है इससे पहले कि आप move_upload_file() का उपयोग करें, वरना यह गंतव्य पथ में फ़ाइल जाएगा और आप अभ्यस्त छवि

के लिए वांछित परिणाम प्राप्त
$imageInformation = getimagesize($_FILES['celebrity_pic']['tmp_name']); 
print_r($imageInformation); 

$imageWidth = $imageInformation[0]; //Contains the Width of the Image 

$imageHeight = $imageInformation[1]; //Contains the Height of the Image 

if($imageWidth >= your_value && $imageHeight >= your_value) 
{ 
    //Your Code 
} 
0

बहुत महत्वपूर्ण है - अगर आप Dreamweaver का उपयोग कर रहे कोड करने के लिए और आप का उपयोग कर $_FILES[anyFormName][tmp_name] यह लाइव ध्यान में रखते हुए एक त्रुटि प्रदर्शित करेगा छवि का आकार प्राप्त करने की कोशिश .. यह मुझे कुछ समय लिया इस यह पता लगाने की।

+0

क्या आपने अपना फॉर्म "मल्टीपार्ट/फॉर्म-डेटा" के रूप में सेट किया है? – Popsyjunior

3

मुझे

$file = $_FILES["files"]['tmp_name']; 
list($width, $height) = getimagesize($file); 

if($width > "180" || $height > "70") { 
    echo "Error : image size must be 180 x 70 pixels."; 
    exit; 
} 
+0

एक अच्छी प्रैक्टिस के रूप में आपको अपने उत्तर को थोड़ा सा समझा जाना चाहिए क्योंकि यह –

+0

@ कुमार को समझने में मदद करता है: मुझे लगता है कि उसका जवाब बहुत अधिक आत्म-व्याख्यात्मक है ... – Stefan