» »

[PHP]Zajem slike iz direktorija

[PHP]Zajem slike iz direktorija

KernelPanic ::

Spostovani!

V bazi imam tabelo, ki opisuje kategorije izdelkov. V prestashop-u ima vsaka kategorija (lahko, odvisno od uporabnika) svojo sliko, ki jih shranjuje na server v direktorij /httpdocs/img/c. Jaz iz te tabele pobiram imena kategorij, nato nastavim pot in v array probam spravit sliko. Nato vse skupaj zapakiram v json objekt in ga posljem klientu, da ga prikaze. Vendar dobim od php skripte sledece warninge in errorje:
"Warning: file_get_contents(/httpdocs/img/c/199-large.jpg) 'function.file-get-contents'function.file-get-contents: failed to open stream: No such file or directory in /var/www/moja-domena.com/php/getCategories.php on line 54
[{"name":"Ostale teko?ine","path":"\/httpdocs\/img\/c\/16-large.jpg","image":null},{"name":"KATEGORIJA1","path":"\/httpdocs\/img\/c\/74-large.jpg","image":null},{"name":"KATEOGRIJA2","path":"\/httpdocs\/img\/c\/75-large.jpg","image":null},{"name":"KATEGORIJA3 KATEGORIJA4","path":"\/httpdocs\/img\/c\/87-large.jpg","image":null},{"name":"KATEGORIJA5","path":"\/httpdocs\/img\/c\/159-large.jpg","image":null},{"name":"KATEGORIJA6","path":"\/httpdocs\/img\/c\/199-large.jpg","image":false}]"
. Tukaj je pa omenjena php skriptka:
<?php
	session_start();

	if($_SERVER["REQUEST_METHOD"]=="POST")
	{
		$hostname_localhost ="localhost";
		$database_localhost ="oljedirekt";
		$username_localhost ="oljedirekt";
		$password_localhost ="oljedirekt";
		$path_to_categories_images="/httpdocs/img/c/";
 
		$localhost=mysql_connect($hostname_localhost,
					 $username_localhost,
					 $password_localhost) or die(mysql_error());

		mysql_select_db($database_localhost) or die(mysql_error());

		$query_categories_id_numbers=mysql_query("SELECT id_category
					 		  FROM ps_category
		  					  WHERE id_parent=1 AND active=1");
		// echo mysql_error();	// debug code

		$number_of_categories=mysql_num_rows($query_categories_id_numbers);
		if($number_of_categories>0)
		{
			// CATEGORIES NAMES FETCH
			$categories_id_numbers="";
			
			while($category_id_number=mysql_fetch_assoc($query_categories_id_numbers))
			{
				$categories_id_numbers.=$category_id_number['id_category'].",";
			}	// while
			$categories_id_numbers = substr($categories_id_numbers,
							0,
							strlen($categories_id_numbers)-1);
		
			// echo $categories_id_numbers;	// debug code
			
			$query_categories_names=mysql_query("SELECT id_category,name
						       	     FROM ps_category_lang
						             WHERE id_category IN ($categories_id_numbers) AND id_lang=1");

			// print_r($query_categories_names);	// debug code

			// echo mysql_error();	// debug code

			$number_of_categories_names=mysql_num_rows($query_categories_names);
			if($number_of_categories_names>0)
			{
				while($categories=mysql_fetch_assoc($query_categories_names))
				{
					$path_to_image=$path_to_categories_images.$categories['id_category']."-large.jpg";

					$image_content=file_get_contents($path_to_image);

					$userdata[]=array("name" => $categories['name'],
							  "path" => $path_to_image,
						          "image" => $image_content);
				}	// while

	                        print(json_encode($userdata));
			}	// if
			// END OF CATEGORIES NAMES FETCH

			// CATEGORIES IMAGES FETCH
			// END OF CATEGORIES IMAGES FETCH
		}
		else
		{
		}	// if
	}	// if
?>
Od kod se mi prikradejo backslashi? Po moje zaradi teh backslashov ne najde poti do slik. Pravice na nivoju filesystem-a sem nastavil na 777 (testno).

MisterR ::

Poizkusi z stripslashes()

KernelPanic ::

MisterR je izjavil:

Poizkusi z stripslashes()
Ahaaaaaa, takoj probam, samo se vedno mi ni jasno, od kod se slashi pojavijo!? Nisem ravno vesca PHPja (se). :)

Sment, isti rezultat, ne pomaga! ;((

Zgodovina sprememb…

MisterR ::

Kako pa je v bazi shranjeno?

KernelPanic ::

V bazi (tabeli) sploh ni fielda, ki bi dal pot do slike na disku, ampak jo prestashop zgenerira z eno skripto. Jaz ne uporabljam prestashop skript, ceprav so na serverju, ampak pisem svoje in zgornja php skripta se izvede, ko bi klient rad dobil seznam kategorij izdelkov. Kot vidis, mi imena kategorij lepo pobere, samo se tale pot do slik me heca ...

KernelPanic ::

Ok, smo porihtali, zgleda, da se sedaj image prenese do Android aplikacije, vendar imam spet problem. V spodnji kodi:
    private boolean getMerhcandiseCategories() throws Exception
    {
        InputStream is=null;
        String result=null;
        boolean bOperationSuccess=false;

        try
        {
            this.setDataResponse(this.dataClient().execute(this.dataPost()));
            this.setDataEntity(this.dataResponse().getEntity());
            is=this.dataEntity().getContent();

            BufferedReader reader=new BufferedReader(new InputStreamReader(is,
                                                                           ("UTF-8")));
            StringBuilder sb=new StringBuilder();
            while((result=reader.readLine())!=null)
            {
                sb.append(result)/*.append("\n")*/;
            }   // while
            result=sb.toString();

            if(!result.isEmpty())
            {
                JSONArray jsonUserdata=new JSONArray(result);

                this.setMerchandiseCategories(new CItemMerchandiseCategory[jsonUserdata.length()]);
                for(int iIndex=0; iIndex<jsonUserdata.length(); iIndex++)
                {
                    Bitmap bmpCategoryImage=null;

                    try
                    {
                        Object jsonImage=jsonUserdata.getJSONObject(iIndex).get("image");
                        byte[] rawImage=jsonImage.toString().getBytes();
                        bmpCategoryImage=BitmapFactory.decodeByteArray(rawImage,
                                                                       0,
                                                                       iIndex);
                    }
                    catch(Exception ex)
                    {
                        bmpCategoryImage=null;

                        String strClassName=ex.getClass().getName().toString();
                        String strMessage=ex.getMessage().toString();

                        Log.wtf(CDatabaseManager.m_strLogTag,
                                strClassName+":"+
                                strMessage);

                        ex.printStackTrace();
                    }
                    String strCategoryName=jsonUserdata.getJSONObject(iIndex).getString("name");
                    this.merchandiseCategories()[iIndex]=new CItemMerchandiseCategory(bmpCategoryImage,
                                                                                      strCategoryName);
                }   // for

                bOperationSuccess=true;
            }
            else
            {
                bOperationSuccess=false;
                throw new Exception(CDatabaseManager.ERROR_NO_MERCHANDISE_CATEGORIES_FOUND);
            }   // if
        }
        catch(Exception ex)
        {
            bOperationSuccess=false;

            String strClassName=ex.getClass().getName().toString();
            String strMessage=ex.getMessage().toString();

            Log.wtf(CDatabaseManager.m_strLogTag,
                    strClassName+":"+
                    strMessage);
        }   // try-catch

        return bOperationSuccess;
    }   // getMerhcandiseCategories
se mi zatakne v vrstici, kjer bi rad kreiral array json objektov. Torej, ta vrstice mi vrze exception. Zakaj??


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java]Listanje slikovnih datotek v izbranem direktoriju

Oddelek: Programiranje
91142 (977) illion
»

[c#] savefiledialog, en sfd a več datotek

Oddelek: Programiranje
8754 (682) darkkk
»

[c#] shrani text, tabele, slike

Oddelek: Programiranje
251524 (1130) klemen93
»

[android] vstavljanje slike

Oddelek: Programiranje
71247 (1144) messi
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
354064 (3701) cobrica

Več podobnih tem