2

我已经为我的 laravel 应用程序创建了一个 HTML5 拖放文件上传,但是我在设置文件名时遇到了一些问题,因为我的所有控制器都可以使用该变量。

用户上传文件的过程,是填写一些会员信息,提交表单后,通过ajax加载了一个新的步骤,这一步是HTML5拖放文件上传。

问题不在于文件上传,该功能工作正常,我的问题是上传操作(如下),

public function action_upload()
{
    $uploadDir = "public/uploads/";
    $file = Input::get('value');
    $name = Input::get('name');

    //Get the mime
    $getMime = explode(".", $name);
    $mime = end($getMime);

    //seperate the data out
    $fileData = explode(',', $file);

    //Encode it correctly
    $encodedData = str_replace(' ', '+', $fileData[1]);
    $decodedData = base64_decode($encodedData);

    //create a random name, will help with not overwriting filesystems.
    $this->randomName = substr_replace(sha1(microtime(true)), '', 12).'.'.$mime;

    if(file_put_contents($uploadDir.$this->randomName, $decodedData)) {
        echo $this->randomName.":uploaded successfully";
    } else {
        echo "Something went wrong. Check that the upload is not corrupted";
    }
}

如您所见,我正在设置一个变量randomName,在 ajax/HTML5 上传完成后,将调用以下代码,

public function action_source()
{
    if(Input::get('step') == "step3") {
        //echo $this->randomName;
        return json_encode(array('next' => $this->data['url']."/project/launch", 'file' => $this->randomName));
    }
    return View::make('project.source', $this->data);
}

然而,在返回的 JSON 对象中,file返回为NULL,我不明白为什么,在我的课程开始时,public $randomName我应该能够通过以下方式访问它,$this->randomName;

如果正确,函数调用的顺序,

动作上传()>动作来源()

为什么我无法访问$randomName

4

0 回答 0