ballouta Posted July 31, 2008 Share Posted July 31, 2008 Hello I have this uplaod form, it is 100% working but i need now to rename the uploaded file so it is NOT more than 9 characters. I searched google but samples i found didnt work correctly with me. I used this: $position=9; $post = substr($name,$position,9); $name = $post; if I echo the $post, it gives H.ask and the bad thing is that I am still getting the file to my email in its long name! here's my code, the file i am uploading is: XXXXXXXXXH.ask PLEASE help <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript"> /* Block multiple form submission script- By JavaScriptKit.com Visit http://www.javascriptkit.com for this script and more This notice must stay intact for use */ //Enter error message to display if submit button has been pressed multiple times below. //Delete below line if you don't want a message displayed: var formerrormsg="You\'ve attempted to submit the form multiple times.\n Please wait till the first file is sent." function checksubmit(submitbtn){ submitbtn.form.submit() checksubmit=blocksubmit return false } function blocksubmit(){ if (typeof formerrormsg!="undefined") alert(formerrormsg) return false } </script> <title>Send Your ask File</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php include('CMS/global.inc.php'); $user ="mdaouk"; //echo "$user"; if ($_SERVER['REQUEST_METHOD']=="POST"){ $size = $_FILES['filename']['size']; $name = $_FILES['filename']['name']; $array = explode( '.' , $name); $date = date("y-m-d"); //here where i was trying to make my tests $length=strlen($name); echo "the file name length = $length<br>"; $position=9; $post = substr($name,$position,9); echo "The final name = $post<br>"; // we'll begin by assigning the To address and message subject $to="[email protected]"; $subject="File to unlock"; // get the sender's name and email address // we'll just plug them a variable to be used later //$from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; $from = "[email protected]"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // store the file information to variables for easier access $tmp_name = $_FILES['filename']['tmp_name']; $type = $_FILES['filename']['type']; $name = $_FILES['filename']['name']; $size = $_FILES['filename']['size']; //check if the user has credits before sending a file $query = "SELECT * FROM `credits` WHERE `user` = '$user' "; $result = mysql_query($query); $row = mysql_fetch_array($result); // here we'll hard code a text message // again, in reality, you'll normally get this from the form submission $message = "A New File from GSCLOnline.org: $name"; // if the upload succeded, the file will exist if (file_exists($tmp_name) && $array[1] == 'ask' && is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); $query=" INSERT INTO `uploaded` ( `user` , `sentfile` , `date` , `received`) VALUES ('$user', '$name', '$date', 'N')"; $query_result = mysql_query ($query, $dbh); // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // next, we'll build the message body // note that we insert two dashes in front of the // MIME boundary when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content and set another boundary to // indicate that the end of the file has been reached $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers)) echo "Your ask file was sent! <br> <b>Warning:</b> do NOT refresh this page! Each refresh costs you 1 credit.<br> "; else echo "Failed to send file, Please contact GSCL Store."; } else { if ($row[num] <= 0) echo "Sorry! You do NOT have enough credits."; else echo "The file you are trying to send is NOT valid."; } //$user= $_GET['user']; echo" <input type='hidden' name='user' value='$user'>"; } else { // if the form was posted ?> <p>Please upload your ask file.</p> <p dir="ltr"><font face="Arial" style="font-size: 11pt" color="#FF0000">Warning: Do not press submit button more than once, or you will loose credits.</font></p> <p dir="ltr">Your file should NOT exceed 9 characters.</p> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1"> <p>File: <input type="file" name="filename"></p> <p><input type="submit" value="Submit" onClick="return checksubmit(this)"></p> </form> <?php } ?> </body> </html> Link to comment https://forums.phpfreaks.com/topic/117493-solved-renaming-an-uploaded-file/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.