


PHP simulates post upload image implementation code, _PHP tutorial
Jul 11, 2016 am 10:36 AMPHP simulation post upload image implementation code,
The example in this article shares the specific code of PHP simulation post upload image for your reference, the specific content is as follows
Both server and client are in PHP language
But the client is not a web page and does not run on the browser, but on the command line
What we need to do now is to access the server on the client, read the image on the server, change the width of the image to 100 on the client, and then upload it to the server.
The first two steps have been completed:
1. Read the image on the server, convert it into binary and send it to the client. The client uses fopen and fwrite to regenerate the image and store it in the client's org/resouse directory
2. Then process the image in org/resouse to a width of 100 and store it in the client org/w100 directory
3. How to re-upload it to the server in the last step?
The first two steps have been completed and can be ignored
There is a picture in the org/w100/ directory of the client: 5k0ach.jpg. How to upload this picture to the server?
Note: The client is not a web page and does not have an interface such as a form. It runs on the command line
Part of the code of client gptest.php (the login part is omitted, assuming the login is successful, directly assign a value to psn_id):
<?php $psn_id = "1fbahh"; $url = SERVER_URL . '/get_imginfo.php'; //SERVER_URL為我自己定義的常量,其值為:http://localhost:8080/phpClientSer $ans = postData_json($url, "psn_id=$psn_id");//postData_json()和postData()在check.php print_r($ans); if ($ans['count'] > 0) { if (!file_exists("org")) { mkdir("org"); mkdir("org/resouse/"); //從服務(wù)器讀取過來的原圖片存放路徑 mkdir("org/w100/"); //把上目錄中臨時(shí)存放的圖片處理為寬度100后存放的路徑 mkdir("org/temp/"); //出來gif圖片是的臨時(shí)mul } foreach ($ans['pdt_id'] as $k => $pdt_id) { $img = "org/resouse/" . $pdt_id . $ans['img_style'][$k]; $url = SERVER_URL . '/get_stream.php';//訪問服務(wù)器的路徑 $postString = $ans['img_url'][$k]; //傳遞的參數(shù)[服務(wù)器上圖片的路徑] $stream = postData($url, "img_url=" . $ans['img_url'][$k]);//從服務(wù)器讀取的圖片內(nèi)容 $file = fopen($img, "w+"); //打開文件準(zhǔn)備寫入 fwrite($file, $stream); //寫入 fclose($file); //關(guān)閉 $image_resize = new image_resize(); $image_resize->act($img, $pdt_id);//處理圖片 $img_u = "org/w100/" . $pdt_id . $ans['img_style'][$k];//處理后圖片的存放路徑 //下面的代碼是把處理過的圖片轉(zhuǎn)為二進(jìn)制傳到服務(wù)器,問題就出在這段代碼 $stm = file_get_contents($img_u); $url = SERVER_URL . '/create_img.php'; $postString = "pdt_id=$pdt_id&img_style=" . $ans['img_style'][$k] . "&img_stm=" . $stm; $move = postData($url, $postString); echo "result---------" . $move . "\r\n"; } } ?>
Part of check.php code
function postData($remote_server, $post_string) { $context = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded' . '\r\n' . 'User-Agent : Jimmy\'s POST Example beta' . '\r\n' . 'Content-length:' . strlen($post_string) + 8, 'content' => $post_string) ); $stream_context = stream_context_create($context); $data = file_get_contents($remote_server, false, $stream_context); return $data; } function postData_json($remote_server, $post_string) { $context = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded' . '\r\n' . 'User-Agent : Jimmy\'s POST Example beta' . '\r\n' . 'Content-length:' . strlen($post_string) + 8, 'content' => $post_string) ); $stream_context = stream_context_create($context); $data = file_get_contents($remote_server, false, $stream_context); return json_decode($data, true); }
Client files:
Double-click the bat.bat file to run pgtest.php on the command line
The file directory where the server handles client requests [http://localhost:8080/phpClientSer/]:
login.php Login
get_imginfo.php Gets the name, type [jpg/png/gif], path and other information of the image from the database after successful login
get_stream.php reads the image according to the image path:
$img_url = $_POST['img_url']; $stream = file_get_contents($img_url); echo $stream;
create_img.php receives the binary sent by the client and creates a new image:
$img_stm = $_POST['img_stm']; $pdt_id = $_POST['pdt_id']; $img_style = $_POST['img_style']; $img_url = $_SERVER['DOCUMENT_ROOT'] . "upload2/w100/" . $pdt_id . $img_style; $file = fopen($img_url,"w+");//打開文件準(zhǔn)備寫入 fwrite($file,$img_stm);//寫入 fclose($file);//關(guān)閉 echo "ok";
New images created by the server cannot be opened:
The last 5 lines of code in client gptest.php and the code in server create_img.php need to be changed.
The above is the entire content of this article. I hope it will be helpful to everyone’s study. I also hope that everyone will support Bangke Home.

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

To merge two PHP arrays and keep unique values, there are two main methods. 1. For index arrays or only deduplication, use array_merge and array_unique combinations: first merge array_merge($array1,$array2) and then use array_unique() to deduplicate them to finally get a new array containing all unique values; 2. For associative arrays and want to retain key-value pairs in the first array, use the operator: $result=$array1 $array2, which will ensure that the keys in the first array will not be overwritten by the second array. These two methods are applicable to different scenarios, depending on whether the key name is retained or only the focus is on

exit() is a function in PHP that is used to terminate script execution immediately. Common uses include: 1. Terminate the script in advance when an exception is detected, such as the file does not exist or verification fails; 2. Output intermediate results during debugging and stop execution; 3. Call exit() after redirecting in conjunction with header() to prevent subsequent code execution; In addition, exit() can accept string parameters as output content or integers as status code, and its alias is die().

The rational use of semantic tags in HTML can improve page structure clarity, accessibility and SEO effects. 1. Used for independent content blocks, such as blog posts or comments, it must be self-contained; 2. Used for classification related content, usually including titles, and is suitable for different modules of the page; 3. Used for auxiliary information related to the main content but not core, such as sidebar recommendations or author profiles. In actual development, labels should be combined and other, avoid excessive nesting, keep the structure simple, and verify the rationality of the structure through developer tools.

There are two ways to create an array in PHP: use the array() function or use brackets []. 1. Using the array() function is a traditional way, with good compatibility. Define index arrays such as $fruits=array("apple","banana","orange"), and associative arrays such as $user=array("name"=>"John","age"=>25); 2. Using [] is a simpler way to support since PHP5.4, such as $color

When you encounter the prompt "This operation requires escalation of permissions", it means that you need administrator permissions to continue. Solutions include: 1. Right-click the "Run as Administrator" program or set the shortcut to always run as an administrator; 2. Check whether the current account is an administrator account, if not, switch or request administrator assistance; 3. Use administrator permissions to open a command prompt or PowerShell to execute relevant commands; 4. Bypass the restrictions by obtaining file ownership or modifying the registry when necessary, but such operations need to be cautious and fully understand the risks. Confirm permission identity and try the above methods usually solve the problem.

The way to process raw POST data in PHP is to use $rawData=file_get_contents('php://input'), which is suitable for receiving JSON, XML, or other custom format data. 1.php://input is a read-only stream, which is only valid in POST requests; 2. Common problems include server configuration or middleware reading input streams, which makes it impossible to obtain data; 3. Application scenarios include receiving front-end fetch requests, third-party service callbacks, and building RESTfulAPIs; 4. The difference from $_POST is that $_POST automatically parses standard form data, while the original data is suitable for non-standard formats and allows manual parsing; 5. Ordinary HTM

To safely handle PHP file uploads, you need to verify the source and type, control the file name and path, set server restrictions, and process media files twice. 1. Verify the upload source to prevent CSRF through token and detect the real MIME type through finfo_file using whitelist control; 2. Rename the file to a random string and determine the extension to store it in a non-Web directory according to the detection type; 3. PHP configuration limits the upload size and temporary directory Nginx/Apache prohibits access to the upload directory; 4. The GD library resaves the pictures to clear potential malicious data.

InPHP,variablesarepassedbyvaluebydefault,meaningfunctionsorassignmentsreceiveacopyofthedata,whilepassingbyreferenceallowsmodificationstoaffecttheoriginalvariable.1.Whenpassingbyvalue,changestothecopydonotimpacttheoriginal,asshownwhenassigning$b=$aorp
