views:

27

answers:

2

Hello, I have a form with

<input type="file" name="uploaded_file" />

I found the post about adding attachments to the mail. The question is how to connect uploaded file with that function? What I have to pass?


UPD:

echo '<pre>';
print_r($_FILES);
echo '</pre>';

$uploads_dir = '/uploads'; // It has need rights

$tmp_name = $_FILES["vac_file"]["tmp_name"];
$res = is_uploaded_file($tmp_name); // This is true
$name = $_FILES["vac_file"]["name"];

move_uploaded_file($tmp_name, "$uploads_dir/$name");
echo '$tmp_name: '. $tmp_name . '; $name: ' . $name;

Array
(
    [vac_file] => Array
        (
            [name] => LFS.desktop
            [type] => application/octet-stream
            [tmp_name] => /tmp/phpV417nF
            [error] => 0
            [size] => 226
        )

)

yeah!
Warning: move_uploaded_file(/uploads/LFS.desktop): failed to open stream: No such file or directory in /srv/http/vacancies_attachment.php on line 47 Warning: move_uploaded_file(): Unable to move '/tmp/phpV417nF' to '/uploads/LFS.desktop' in /srv/http/vacancies_attachment.php on line 47 $tmp_name: /tmp/phpV417nF; $name: LFS.desktop
+2  A: 

Use move_uploaded_file() to move the file to a temporary location; attach it to the mail from there and delete it afterwards (or keep it, whatever you want to do).

See the PHP manual on file uploads for a detailed example.

Pekka
@pekka I tried to do that and got the error. Could you look at updated post?
Ockonal
@Ockonal are you sure `/uploads` exists? In the root directory?
Pekka
@pekka, oh, I forgot about point in the path. './uploads' works great. Thanks for the tip.
Ockonal
+2  A: 

Your complete solution should look like this:

1) html

<form method="post" action="myupload.php">
<input type="file" name="uploaded_file" />
<input type="submit" />
</form>

2) myupload.php

<?php
$uploads_dir = '/uploads';
foreach ($_FILES["uploaded_file"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["uploaded_file"]["tmp_name"][$key];
        $name = $_FILES["uploaded_file"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>

Taken from http://php.net/manual/en/function.move-uploaded-file.php

Anax
The code is for multiply files. I rewrote it for my needs. Could you look updated post?
Ockonal