如何获取添加到目录的最后一个文件的名称

时间:2021-07-11 23:59:47

I have a program that either gets user input and changes it into a file or allows the user to upload a file. I am having an issue getting the uploaded file from the user. Right now I have it hardcoded for a sample file that I uploaded called sample.fasta. I want to be able to get the name of the file that the user uploaded, and then call my program using the name of that file.

我有一个程序,可以获取用户输入并将其更改为文件或允许用户上载文件。我从用户那里获取上传的文件时遇到问题。现在,我已将其硬编码为我上传的名为sample.fasta的示例文件。我希望能够获取用户上传的文件的名称,然后使用该文件的名称调用我的程序。

I will post all the relevant code about this question.

我将发布有关此问题的所有相关代码。

This page is called blast.php

这个页面叫做blast.php

<?php
if(isset($_POST['submit2'])){
            //echo "submit2";
    //      echo $_FILES['uploadedfile']['name'];

     //declare variables to what the user defines them as
            $db = $_POST['database'];
            $evalue = $_POST['evalue'];
            $sequence = $_POST['BlastSearch'];
            $hits = $_POST['hits'];
            $userid = $_SESSION['uid'];

            //insert the values into the database
            $mysqli->query("INSERT INTO `Job` (`uid`, `input`, `status`, `start_time`, `finish_time`) VALUES ('1', 'used a file', 'running' , NOW(), NOW())");

            $mysqli->query("INSERT INTO `BLAST`(`db_name`, `evalue`, `job_id`) VALUES ('" . $db . "','" . $evalue . "', '".$mysqli->insert_id."')") or die(mysqli_error($mysqli));

            //need to change the name of sample.fasta to whatever file uploaded
            exec('/students/groups/cs4380sp15grp4/blast/blast-2.2.26/bin/blastall -p blastp -d db -i /students/groups/cs4380sp15grp4/public_html/home/uploads/sample.fasta -m '.$evalue.' -o outputFILE -v '.$hits.' -b '.$hits);
?>
          <form enctype="multipart/form-data" action="upload.php" method="POST" class="form-inline">
                            <input type="file" name="fileToUpload" id="fileToUpload" class="form-control"/>
                            <input type="submit" value="upload" name="upload" class="form-control"/>
                            <input type="reset" value="reset" name="reset" class="form-control"/>
            </form>

This file is called upload.php and the form I use to upload the file.

这个文件叫做upload.php和我用来上传文件的表单。

 <?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$FileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Allow certain file formats
if($FileType != "fasta" ) {
    echo "Sorry, only fasta files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))     {

    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}
}
header('Location: http://babbage.cs.missouri.edu/~cs4380sp15grp4/home/blast.php');
?>

So basically in my exec function instead of reading sample.fasta, I need to read the file that the user uploads...

所以基本上在我的exec函数中而不是读取sample.fasta,我需要读取用户上传的文件...

2 个解决方案

#1


You could simply post your form back to the page that has the form on it, which would then have your uploaded file name and location to do whatever else you need to do with it.

您只需将表单发回到包含表单的页面,然后将上传的文件名和位置用于执行您需要执行的任何操作。

To do this, you could check to see if your post values are set at the beginning of the PHP file and do your processing if they are just like you did on your upload.php file.

为此,您可以检查您的帖子值是否设置在PHP文件的开头,如果它们与您在upload.php文件中的操作一样,则进行处理。

#2


Change in your upload.php last line to:

将upload.php的最后一行更改为:

header('Location: http://babbage.cs.missouri.edu/~cs4380sp15grp4/home/blast.php?file='.urlencode($target_file));

and check $_GET in your blast.php:

并检查你的blast.php中的$ _GET:

if(isset($_GET['file'])){
    $fastaFile = $_GET['file']
....

#1


You could simply post your form back to the page that has the form on it, which would then have your uploaded file name and location to do whatever else you need to do with it.

您只需将表单发回到包含表单的页面,然后将上传的文件名和位置用于执行您需要执行的任何操作。

To do this, you could check to see if your post values are set at the beginning of the PHP file and do your processing if they are just like you did on your upload.php file.

为此,您可以检查您的帖子值是否设置在PHP文件的开头,如果它们与您在upload.php文件中的操作一样,则进行处理。

#2


Change in your upload.php last line to:

将upload.php的最后一行更改为:

header('Location: http://babbage.cs.missouri.edu/~cs4380sp15grp4/home/blast.php?file='.urlencode($target_file));

and check $_GET in your blast.php:

并检查你的blast.php中的$ _GET:

if(isset($_GET['file'])){
    $fastaFile = $_GET['file']
....