Jump to content

Helcio

New Members
  • Posts

    3
  • Joined

  • Last visited

    Never

Posts posted by Helcio

  1. I found a solution. I don´t know if this is the better solution, but works fine.

     

    index.htm

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>  
    <title></title>
    </head>
    <body>    
    <form action="imagem.php" method="post" enctype='multipart/form-data'>        
    <input type="file" id="foto" name="foto" />        
    <input type="submit" value="Enviar" />    
    </form>
    </body>
    </html>
    

     

    imagem.php

    <?php
    preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $_FILES['foto']['name'], $ext);
    $imagem_nome = md5(uniqid(time())) . "." . $ext[1];
    rename($_FILES['foto']['tmp_name'], "/tmp/" . $imagem_nome);
    
    $postData = array();
    $postData['fileupload'] = "@/tmp/" . $imagem_nome;
    $postData['submit']     = "Submit";
    $postData['key']         = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    $postData['rembar']     = "yes";
    $postData['xml']        = "yes";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.imageshack.us/index.php");
    curl_setopt($ch, CURLOPT_POST, true );
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 240);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData );
    
    $response = curl_exec( $ch );
    curl_close($ch );
    
    echo $response;
    ?>
    

     

    I did not use the $_FILES['foto']['type'] function to get the file extension, because if the file type is jpg, this function returns pjpg, generating an error of invalid format in the Imageshack.

    The Imageshack then returns a xml that be parsed, with links to the image.

     

    I have another question. When I renamed the file in the temp directory, this file will be automatic deleted or I need to delete the file manually?

  2. I tried using different code:

    <?php

    $postData = array();

    $postData['fileupload'] = "@" . $_FILES['foto']['tmp_name'];

    $postData['submit']    = "Submit";

    $postData['key']        = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

    $postData['email']      = "email@email.com";

    $postData['rembar']    = "yes";

    $postData['optsize']    = "96x96";

    $postData['xml']        = "yes";

     

    $ch = curl_init();

     

    curl_setopt($ch, CURLOPT_URL, "http://www.imageshack.us/upload_api.php");

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    curl_setopt($ch, CURLOPT_POST, 1 );

    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData );

     

    $response = curl_exec( $ch );

    curl_close($ch );

     

    echo $response . "<br />";

    ?>

     

    and the different error message was sent:

    Wrong file type detected for file php6JrCec:application/octet-stream

    cURL  sent file using their temp name and the type verification of the Imageshack was refused.

    How can I send files to Imageshack using cURL?

  3. I am trying to upload images to Imageshack directly form my site with Imageshack API, using the code bellow:

     

    index.htm

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

     

    <html xmlns="http://www.w3.org/1999/xhtml">

     

    <head>

      <title></title>

    </head>

    <body>

        <form action="curl-form.php" method="post" enctype='multipart/form-data'>

            <input type="file" id="foto" name="foto" />

            <input type="submit" value="Enviar" />

        </form>

    </body>

    </html>

     

    img.php

    <?php

    $data = array();

    $data['fileupload'] = '@' . $_FILES["foto"]['tmp_name'];

    $data['key']        = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

    $data['email']      = 'email@email.com';

    $data['rembar']    = 'yes';

    $data['optsize']    = '96x96';

    $data['xml']        = 'yes';

     

    $post_str = '';

    foreach($data as $key=>$val) {

    $post_str .= $key.'='.urlencode($val).'&';

    }

    $post_str = substr($post_str, 0, -1);

     

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'http://www.imageshack.us/upload_api.php');

    curl_setopt($ch, CURLOPT_POST, TRUE);

    curl_setopt($ch, CURLOPT_HEADER, FALSE);

    curl_setopt($ch, CURLOPT_TIMEOUT, 240);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

    $response = curl_exec($ch );

    curl_close($ch );

     

    if (strpos ( $response, '<' . '?xml version="1.0" encoding="iso-8859-1"?>' ) === false)

    {

        return NULL;

    }

    else

    {

        $xml = new SimpleXMLElement ( $response );

        return array (

        "image" => $xml->image_link,

        "thumb" => $xml->thumb_link );

    }

    ?>

     

    When I upload an image, the following error occurs:

     

    "Sorry, but we've detected that unexpected data is received. Required parameter 'fileupload' is missing or your post is not multipart/form-data"

     

    What is wrong with the code?

    How can I send enctype='multipart/form-data' with cURL?

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.