EGHDK
EGHDK

Reputation: 18130

Using only PHP and HTML to act like JavaScript

I have an assignment for school, and I'm not sure how the teacher wants us to accomplish a task.

  1. We need to get an uploaded file as a temp file only (index.php)
  2. Output size of file (upload.php)
  3. User can confirm save of file or not (upload.php)

So, I have the majority down, but my problem lies with creating the temp file into a permanent file.

index.php

<html>
<form action="http://mysite.org/~me/upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

upload.php

<?php
if (($_FILES["file"]["type"] == "application/vnd.ms-excel"))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

    }
    }
  ?>
  <form action="" method="POST">
  <input type="submit" value"YES please save">
  <form>
  <?php
  if (isset($_POST['submit']))
  {
    //Code for saving file
    echo 'File saved!';
  }
  ?>

Is it possible to go about it this way? My last echo statement does not work, so I'm doubtful the file save would be as well.

Upvotes: 1

Views: 194

Answers (4)

drew010
drew010

Reputation: 69967

Hopefully the following comments can help you with the part you are stuck on.

In case you hadn't realized it already, any files uploaded with PHP are deleted once the PHP request that handled the uploaded file terminates. This means, if you don't do anything with the temp file from the upload, it will be deleted when the PHP script terminates.

One function of interest to you will be move_uploaded_file() which will move the temporary file from the upload to a permanent location of your choice.

Since the file will be uploaded and then you have to display the size and ask the user to confirm the upload, you will have to move the temp file to a permanent temporary location where it is kept when the user hasn't confirmed they want to keep the upload.

I'm not sure if you have been introduced to sessions yet, but if not, you will probably need some hidden form element that will keep track of what file they uploaded, otherwise you can keep this info in the session.

Then when the person submits the form saying they want to keep the file, you can move it again to a permanent location, or if they say no, then delete the file. The problem is, if they never say yes or no, then the file remains on the system.

Hope that helps.

Upvotes: 1

Tatu Ulmanen
Tatu Ulmanen

Reputation: 124828

The file is saved to a temporary location when the upload completes. You can access this temporary file with $_FILES['file]['tmp_name'] BUT the file will be removed at the end of the request if you do nothing about it. This means that when the user clicks YES please save button, the file will not be available any more.

This means that you have to save the file to a disk in the first place, when you first call the upload.php file. There is no way to keep the file "in memory" while the user decides whether or not to save the file permanently.

Upvotes: 0

Richard Connamacher
Richard Connamacher

Reputation: 3216

Your final if statement in PHP is looking for a post variable named 'submit' but your <input type="submit"> tag has no name.

Upvotes: 0

Matthew Blancarte
Matthew Blancarte

Reputation: 8301

Yep, this should work. Your if statements will catch the form submission and then echo your string there. A few little errors in your markup:

<input type="submit" value"YES please save">

Should be

<input type="submit" value="YES please save" name="submit">

Upvotes: 0

Related Questions