Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

File Upload Rename - Keep Extension

Posted on 2004-08-02
12
765 Views
Last Modified: 2008-01-09
Hi,

Trying to do a file uplaod and keep the extension. Unforntunately I can only upload text files - any idea why?

$email_user is a variable contain username
$userfile is from the form

/* File Upload in Start */
$today = date("YmdGis");
$pieces = explode(".", $_FILES['userfile']['name']);
$ext = $pieces[count($pieces) - 1];  
$filename = "$email_user$today.$ext";
$uploaddir = '../uploads/';
$uploadfile = $uploaddir . $filename ;
if (is_uploaded_file($userfile)) {
  (move_uploaded_file($userfile, $uploadfile));
}
/* end file upload */

Thanks,

Farawayman
0
Comment
Question by:farawayman
  • 4
  • 3
  • 3
  • +2
12 Comments
 
LVL 3

Expert Comment

by:pYrania
ID: 11701186
regardless of the extension, that won't work.
see my little example.

$pieces = explode(".", "asdf.foo.bar.txt");
$ext = $pieces[count($pieces) - 1)]; // ext = bar
0
 

Author Comment

by:farawayman
ID: 11701226
Hey!

Whats with asdf.foo.bar.txt

Thanks.
0
 
LVL 3

Expert Comment

by:pYrania
ID: 11701250
that's my example filename.
just wanted to show you, that your script won't work as expected with serveral dots in the filename.
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
LVL 1

Expert Comment

by:CaN
ID: 11701320
Sorry pYrania, but your example is not right. The number of dots in the filename doesn't change anything in such an example. Beacuse file extension is always the last part in the filename. In your example $ext gives "txt" not "bar". The code that farawayman gave doesn't seem to be false. It should work.

Can you give a little more details pls? What happens when you try to upload a file other than txt file? Doesn't it upload? Or does it upload it with a false extension? What is the result?
0
 

Author Comment

by:farawayman
ID: 11701351
Hi CaN,

The file does not upload - period.

If I try with a text file it works.

Really strange stuff.

Using php 4.3.7 and IIS

Cheers!
0
 
LVL 3

Assisted Solution

by:pYrania
pYrania earned 100 total points
ID: 11701409
w00t, you're absolutely correct - it's still too early in the morning over here.
0
 
LVL 26

Assisted Solution

by:ushastry
ushastry earned 200 total points
ID: 11701566
Try with this..

$email_user is a variable contain username
$userfile is from the form

/* File Upload in Start */
       $today = date("YmdGis");
       $pieces = explode(".", $_FILES['userfile']['name']);
       $ext  = $pieces[1];
       $filename = $email_user.$today.".".$ext;
       $uploaddir = '../uploads/';
       $uploadfile = $uploaddir . $filename ;
if (is_uploaded_file($userfile)) {
  (move_uploaded_file($userfile, $uploadfile));
}
/* end file upload */

0
 

Author Comment

by:farawayman
ID: 11701621
Hi,

This did not work just text files allowed still .... is this a setting somewhere else that has gone goofy?
0
 
LVL 26

Expert Comment

by:ushastry
ID: 11701693
0
 
LVL 26

Expert Comment

by:ushastry
ID: 11701724
If you do any changes in the Configuration files(php.ini,httpd.conf), then you must restart the web server to reflect the new changes.
0
 
LVL 25

Accepted Solution

by:
Marcus Bointon earned 200 total points
ID: 11701788
There's a little wheel reinventing going on here - It's not like no-one has ever needed to figure out an extension before:

http://uk.php.net/manual/en/function.pathinfo.php

$p = pathinfo($_FILES['userfile']['name']);
$ext = $p['extension'];
0
 

Author Comment

by:farawayman
ID: 11701938
Okay at first that did not work and then I think I discovered the problem and then my original solution should work ....

The problem was:

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">

Remove this and it works a treat.

:-))))))))))))))))))))))))))))

Okay points time:

pYrania - 100 points for being up so early to assist.
ushastry - 200 points for being persistant
squinky - 200 points for showing me the light

Thanks all!
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction HTML checkboxes provide the perfect way for a web developer to receive client input when the client's options might be none, one or many.  But the PHP code for processing the checkboxes can be confusing at first.  What if a checkbox is…
This article discusses how to create an extensible mechanism for linked drop downs.
The viewer will learn how to dynamically set the form action using jQuery.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

766 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question