Implement file upload with PHP

zhaozj2021-02-08  227

Implement file upload with PHP

Author Yahav Boaz Translator Limodou

One of the questions that often see on the WebDev site is about the file upload. In this article I will explain how to implement files with PHP

Upload.

Design Upload Form

Our main goal is to complete the document to the server from the local computer. In order to do this, we need to make a table

Grid, allow users to select a file and you can submit it. Below is an example:

file upload table </ title></p> <p></ HEAD></p> <p><Body></p> <p><Table></p> <p><Form encType = "multipart / form-data" name = myform</p> <p>Action = Submit.php3</p> <p>Method = "POST"></p> <p><TR> <TD> Select Upload File </ TD> <TD> <Input Name = "MyFile"</p> <p>TYPE = "file"> </ td> </ tr></p> <p><TR> <TD COLSPAN = "2"> <input name = "Submit" Value = "Upload"</p> <p>TYPE = "Submit"> </ td> </ tr></p> <p></ TABLE></p> <p></ Body></p> <p></ Html></p> <p>Note that the ENCTYPE = "Multipart / Form-Data" section in the table. This must not be wrong, otherwise the server will not know what you are on.</p> <p>send file.</p> <p>Design uploader</p> <p>Now we have completed the front part, let us carefully consider how the background is how to receive the file and save it to our designated</p> <p>Record it. Let's start with PHP. This is the program of Submit.php3:</p> <p><?</p> <p>IF ($ myfile! = "None") {</p> <p>Copy ($ MyFile, "/ Home / Berber / $ MyFile_Name");</p> <p>Unlink ($ myfile);</p> <p>}</p> <p>Else {</p> <p>Echo "You don't have any file";</p> <p>}</p> <p>?></p> <p>No matter what you believe, this is the entire process. What we do in the program is:</p> <p>1. Check if a file has been uploaded to the server, passing if ($ myfile! = "None);</p> <p>2. Copy files to the specified location.</p> <p>3. Delete the temporary file.</p> <p>When you press the submit button, the file will be uploaded from your computer to the temporary directory of the server. Files in the temporary directory</p> <p>Named a temporary file. You should use the Name value of the file field to access it, here is $ myfile. Real file name Using File</p> <p>The Name value of the field is plus "_name" to access it, here is $ myfile_name. Use the copy () function to copy the temporary file $ myfile</p> <p>Bet to the specified directory, the copy file is named $ myfile_name. Don't forget to delete temporary files after completion, or you will have a lot of you.</p> <p>Unwanted files.</p> <p>Set file name</p> <p>A thing that may make programmers can't sleep is to try to change the value of the value attribute of the File field. Not a lot of people know it</p> <p>It is impossible. Although W3C said, it is actually, IE and Netscape are not allowed to set values ​​for VAUE properties. It's a bit</p> <p>Laugh, why can't I set an initial value so that users use it more convenient? If you do that, then you will find you</p> <p>It comes to a safe vulnerability. You can imagine that you log in to my website, I can change the value of the File field in a table. So do you have to prevent me from uploading your / etc / passwd file? Further, I don't need you to press the submit button, I can set it first.</p> <p>Set the value of the file field, then simulate the submission action through a javascript program ... Wow ... I can handle anything on your machine.</p> <p>Document. For this reason, the browser is simply ignored by the value field of the File field in the <input> tag.</p> <p>Limit file size</p> <p>Another cool feature is to limit the size option of the uploaded file. Just add a <input> tag. You can:</p> <p><Input Type = "Hidden" name = "max_file_size" value = "100000"></p> <p>This will not allow users to upload more than 100KB files.</p> <p>Display file size</p> <p>To display the file size, you can access the "_size" variable by the file field Name property value. In our example</p> <p>That is to use $ myfile_size. So, if you want to tell the user to upload the size of the file, you can do it as follows:</p> <p>Echo "You Have Just Uploaded $ MyFile_Name";</p> <p>Echo "The size of the file is $ myfile_size";</p> <p>Authority</p> <p>Obviously you need to write permission on the target directory. If a user uses an inuts to upload files, then his username should be</p> <p>Bobody. This user must have permissions written on the target directory. Otherwise, you may get an image below:</p> <p>Warning: unable to create '/Home/berber/berber.txt':</p> <p>Permission denied</p> <p>In /Home/berber/Submit.php3 on line 5</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-1281.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="1281" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.045</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = '10ADK_2FpqVT1JBiFsrGCy3eT7LCxYg5cGzrzdkU6nafAy1Ahgq2unVqA2wSumosS5qgnUZOMlJn_2FJoJQhaf9Trg_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>