Pergunta

Eu tenho um problema com a classe FileReference usando a função de upload. Eu quero enviar a variável folderLocation com fileReference.upload(). Abaixo eu tento descrever a minha estratégia.

var folderLocation : String = "photos/myUniqueFolder/";

private var serverSideScript:String = "http://localhost/project/phpFlexMechanism/upload.php";
urlRequest = new URLRequest(serverSideScript);

fileReferenceList.addEventListener(Event.SELECT, fileSelectedHandler);

private function fileSelectedHandler(event:Event):void {
// upload the file to the server side script
        fileReference.addEventListener(Event.COMPLETE, uploadCompleteHandler);
        fileReference.upload(urlRequest);
}

No PHP eu uso isso para obter o arquivo e enviados

$folder = $_POST['folder'];

$tempFile = $_FILES['Filedata']['tmp_name'];
$fileName = $_FILES['Filedata']['name'];
$fileSize = $_FILES['Filedata']['size'];

move_uploaded_file($tempFile, "../user/$folder/uploadImages/" . $fileName);

Mas como eu posso enviar o folder através da "referência de upload"?

Foi útil?

Solução

Gostaria de pensar que, desde que você FileReference necessidades um URLRequest, você seria capaz de piggy back essa informação através do próprio URLRequest usando o objeto flash.net.URLVariables.

Eu não tive tempo para testar isso, mas você já tentou:

// put this right after you instantiate urlRequest;
var urlVars:URLVariables = new URLVariables();
urlVars.targetFolder     = folderLocation;
urlRequest.method        = "post";
urlRequest.data          = urlVar;

Isso deve deixá-lo fazer:

//replace your last line with these two.
$folder = $_REQUEST[ "targetFolder" ];
move_uploaded_file($tempFile, "../user/$folder/uploadImages/" . $fileName);

em PHP.

Outras dicas

a coisa mais fácil que você pode fazer é apenas enviá-lo através de cabeça get na função de upload

para os olhares de código da seguinte maneira

private var serverSideScript:String = "http://localhost/project/phpFlexMechanism/upload.php?extraVar=value&extraVarB=value2"; 

fileReference.upload(urlRequest);

, em seguida, o script php que você acabou de usar

$_GET['extraValue']
$_GET['valueVarB']
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top