


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

The method to get the current session ID in PHP is to use the session_id() function, but you must call session_start() to successfully obtain it. 1. Call session_start() to start the session; 2. Use session_id() to read the session ID and output a string similar to abc123def456ghi789; 3. If the return is empty, check whether session_start() is missing, whether the user accesses for the first time, or whether the session is destroyed; 4. The session ID can be used for logging, security verification and cross-request communication, but security needs to be paid attention to. Make sure that the session is correctly enabled and the ID can be obtained successfully.

To extract substrings from PHP strings, you can use the substr() function, which is syntax substr(string$string,int$start,?int$length=null), and if the length is not specified, it will be intercepted to the end; when processing multi-byte characters such as Chinese, you should use the mb_substr() function to avoid garbled code; if you need to intercept the string according to a specific separator, you can use exploit() or combine strpos() and substr() to implement it, such as extracting file name extensions or domain names.

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

In PHP, the most common method is to split the string into an array using the exploit() function. This function divides the string into multiple parts through the specified delimiter and returns an array. The syntax is exploit(separator, string, limit), where separator is the separator, string is the original string, and limit is an optional parameter to control the maximum number of segments. For example $str="apple,banana,orange";$arr=explode(",",$str); The result is ["apple","bana

JavaScript data types are divided into primitive types and reference types. Primitive types include string, number, boolean, null, undefined, and symbol. The values are immutable and copies are copied when assigning values, so they do not affect each other; reference types such as objects, arrays and functions store memory addresses, and variables pointing to the same object will affect each other. Typeof and instanceof can be used to determine types, but pay attention to the historical issues of typeofnull. Understanding these two types of differences can help write more stable and reliable code.

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu
