Changes to improve robustness of uploads, and make things compatible

with PHP 4.3.0.  Also some translation fixes with upload strings.
This commit is contained in:
moodler 2003-01-05 04:20:32 +00:00
parent 8556ae8641
commit 3b7c1de95e
5 changed files with 35 additions and 15 deletions

View File

@ -92,18 +92,25 @@
case "upload":
html_header($course, $wdir);
if ($save) {
if (!is_uploaded_file($userfile['tmp_name']) and $userfile['size'] > 0) {
echo "<P>Error: That was not a valid file.";
if (!empty($_FILES['userfile'])) {
$userfile = $_FILES['userfile'];
} else {
$save = false;
}
if (!empty($save)) {
if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) {
notify(get_string("uploadnofilefound"));
} else {
$userfile_name = clean_filename($userfile['name']);
if ($userfile_name) {
$newfile = "$basedir$wdir/$userfile_name";
if (move_uploaded_file($userfile['tmp_name'], $newfile)) {
echo "Uploaded $userfile_name (".$userfile['type'].") to $wdir";
$a = NULL;
$a->file = "$userfile_name (".$userfile['type'].")";
$a->directory = $wdir;
print_string("uploadedfileto", "", $a);
} else {
echo "A problem occurred while uploading '$userfile_name'";
echo " (possibly it was too large)";
notify(get_string("uploadproblem", "", $userfile_name));
}
}
}
@ -113,23 +120,28 @@
$upload_max_filesize = get_max_upload_file_size();
$filesize = display_size($upload_max_filesize);
echo "<P>Upload a file (maximum size $filesize) into <B>$wdir</B>:";
$struploadafile = get_string("uploadafile");
$struploadthisfile = get_string("uploadthisfile");
$strmaxsize = get_string("maxsize", "", $filesize);
$strcancel = get_string("cancel");
echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>";
echo "<TABLE><TR><TD COLSPAN=2>";
echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=index.php>";
echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">";
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
echo " <INPUT TYPE=hidden NAME=action VALUE=upload>";
echo " <INPUT NAME=\"userfile\" TYPE=\"file\" size=\"50\">";
echo " <INPUT NAME=\"userfile\" TYPE=\"file\" size=\"60\">";
echo " </TD><TR><TD WIDTH=10>";
echo " <INPUT TYPE=submit NAME=save VALUE=\"Upload this file\">";
echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">";
echo "</FORM>";
echo "</TD><TD WIDTH=100%>";
echo "<FORM ACTION=index.php METHOD=get>";
echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
echo " <INPUT TYPE=submit VALUE=\"Cancel\">";
echo " <INPUT TYPE=submit VALUE=\"$strcancel\">";
echo "</FORM>";
echo "</TD></TR></TABLE>";
}

View File

@ -496,6 +496,9 @@ $string['updatingain'] = "Updating a \$a->what in \$a->in";
$string['updatethis'] = "Update this \$a";
$string['upload'] = "Upload";
$string['uploadafile'] = "Upload a file";
$string['uploadedfileto'] = "Uploaded \$a->file to \$a->directory";
$string['uploadnofilefound'] = "No file was found - are you sure you selected one to upload?";
$string['uploadproblem'] = "An unknown problem occurred while uploading the file '\$a' (perhaps it was too large?)";
$string['uploadthisfile'] = "Upload this file";
$string['userdeleted'] = "This user account has been deleted";
$string['userdescription'] = "Description";

View File

@ -5,7 +5,9 @@
require_variable($id); // Assignment ID
$newfile = $HTTP_POST_FILES["newfile"];
if (!empty($_FILES['newfile'])) {
$newfile = $_FILES['newfile'];
}
if (! $assignment = get_record("assignment", "id", $id)) {
error("Not a valid assignment ID");
@ -41,7 +43,10 @@
error("Sorry, an error in the system prevents you from uploading files: contact your teacher or system administrator");
}
if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) {
if (empty($newfile)) {
notify(get_string("uploadnofilefound", "assignment") );
} else if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) {
if ($newfile['size'] > $assignment->maxbytes) {
notify(get_string("uploadfiletoobig", "assignment", $assignment->maxbytes));
} else {

View File

@ -1159,10 +1159,10 @@ function forum_print_attachments($post, $return=NULL) {
function forum_add_attachment($post, $newfile) {
// $post is a full post record, including course and forum
// $newfile is a full upload array from HTTP_POST_FILES
// $newfile is a full upload array from $_FILES
// If successful, this function returns the name of the file
if (!isset($newfile['name'])) {
if (empty($newfile['name'])) {
return "";
}

View File

@ -15,7 +15,7 @@
$post->subject = strip_tags($post->subject); // Strip all tags
$post->message = clean_text($post->message, $post->format); // Clean up any bad tags
$post->attachment = $HTTP_POST_FILES["attachment"];
$post->attachment = $_FILES["attachment"];
if (!$post->subject and !$post->message) {
error(get_string("emptymessage", "forum"));