View comments | RSS feed

upload (FileReference.upload method)

public upload(url:String) : Boolean

Starts the upload of a file selected by a user to a remote server. Flash Player can upload files of up to 100 MB. You must call FileReference.browse() or FileReferenceList.browse() before calling this method.

Listeners receive events to indicate the progress, success, or failure of the upload. Although you can use the FileReferenceList object to let users select multiple files to upload, you must upload the files one by one. To do so, iterate through the FileReferenceList.fileList array of FileReference objects.

The file is uploaded to the URL passed in the url parameter. The URL must be a server script configured to accept uploads. Flash Player uploads files using the HTTP POST method. The server script that handles the upload should expect a POST request with the following elements:

Here is a sample POST request:

 Content-Type: multipart/form-data; boundary=AaB03x
 --AaB03x 
 Content-Disposition: form-data; name="Filedata"; filename="example.jpg" 
 Content-Type: application/octet-stream
 ... contents of example.jpg ... 
 --AaB03x-- 

You can send data to the server with the upload() call by appending parameters to the URL.

Note: If your server requires user authentication, only SWF files running in a browser--that is, using the browser plug-in or ActiveX control--can provide a dialog box to prompt the user for a user name and password for authentication, and only for downloads. For uploads that use the plug-in or ActiveX control, and for uploads and downloads that use the stand-alone or external player, the file transfer fails.

When using this method, consider the Flash Player security model:

For more information, see the following:

Availability: ActionScript 1.0; Flash Player 8

Parameters

url:String - The URL of the server script configured to handle upload through HTTP POST calls. The URL can be HTTP or, for secure uploads, HTTPS.

You can send data to the server with the upload() call by appending parameters to the URL; for example, http://www.myserver.com/upload.cgi?userID=jdoe

On some browsers, URL strings are limited in length. Lengths greater than 256 characters may fail on some browsers or servers.

Returns

Boolean - A value of false in any of the following situations:

Example

The following example shows an implementation of the upload() method by first prompting the user to select a file to upload, then handling the onSelect and onCancel listeners, and finally handling the results of the actual file upload.

import flash.net.FileReference;

var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);

var listener:Object = new Object();

listener.onSelect = function(file:FileReference):Void {
    trace("onSelect: " + file.name);
    if(!file.upload("http://www.yourdomain.com/yourUploadHandlerScript.cfm")) {
        trace("Upload dialog failed to open.");
    }
}

listener.onCancel = function(file:FileReference):Void {
    trace("onCancel");
}

listener.onOpen = function(file:FileReference):Void {
    trace("onOpen: " + file.name);
}

listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
    trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}

listener.onComplete = function(file:FileReference):Void {
    trace("onComplete: " + file.name);
}

listener.onHTTPError = function(file:FileReference):Void {
    trace("onHTTPError: " + file.name);
}

listener.onIOError = function(file:FileReference):Void {
    trace("onIOError: " + file.name);
}

listener.onSecurityError = function(file:FileReference, errorString:String):Void {
    trace("onSecurityError: " + file.name + " errorString: " + errorString);
}

var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
fileRef.browse(allTypes);

See also

browse (FileReference.browse method), browse (FileReferenceList.browse method), download (FileReference.download method), fileList (FileReferenceList.fileList property)


Version 8

Comments


shimi2 said on Sep 21, 2005 at 4:45 PM :
If the file to be uploaded is bigger than approximately 10KB, the Windows Flash Players will first send a test upload POST with zero content prior to uploading the actual file in order to verify that the transmission is likely to be successful. The second POST will contain actual file content. For smaller files, the Flash Player will do a single upload POST with the file to be uploaded.

The Mac players currently do not do test upload POSTs.
shimi2 said on Sep 21, 2005 at 4:58 PM :
Also, the FileReference.upload() and FileReference.download() functions are non-blocking. These functions return after they are called, before the file transmission is complete. In addition, if the FileReference object goes out of scope, any upload or download that has not yet been completed on that object is cancelled upon leaving the scope. So, be sure that your FileReference object will remain in scope for as long as the upload or download could be expected to continue.
No screen name said on Sep 23, 2005 at 10:15 AM :
Flash Player 8 on both Windows and Mac sends an invalid multipart
request. Most servers ignore this error, but working in Ruby on Rails, we
found that the Ruby CGI.rb file actually catches this problem and raises
an exception.

The problem is that the last part of the multipart message which contains
a "Submit Query" button (for some reason) is formatted incorrectly.
Normally the header of the part must be separated from the body by 2
EOL tokens (\r\n), but here is only one EOL token sent by Flash Player 8.
The fix in Ruby (which took 5 hours) is this:

if (not head)
if /#{EOL}#{EOL}/n.match(buf)
buf = buf.sub(/\A((?:.|\n)*?#{EOL})#{EOL}/n) do
head = $1.dup
""
end
next
else
if buf.size >= maxheadsize || content_length <= 0
# head is too big or corrupt. let's set a fake one
# For now, we're still accepting the POST, but we may want to
# raise an error instead
params["__corrupt_multipart_data"] = ['true']
return params
end
end
end

This replaces a similar block around line 1000 in cgi.rb in the ruby lib/
directory.

BUT, I believe this a bug in the Flash Player and should be addressed.
rect said on Sep 23, 2005 at 6:05 PM :
See the Ruby bug report for another patch for this.
http://dev.rubyonrails.org/ticket/2277

I don't understand the purpose of the "test POST" anyway - why not just attempt the real POST and invoke onIOError if it fails?
Mantle0 said on Oct 12, 2005 at 5:04 PM :
i second that - perhaps we can have this "test POST" as an option that may be turned off (or turned on)? thanks flash team,
FlismFlazim said on Oct 12, 2005 at 5:54 PM :
here's a snippet if you're using coldFusion. the filefield has to be set to the literal string: "filedata"

<cffile
action="upload"
filefield="FILEDATA"
destination="C:\pathOnServer\#FORM.FILENAME#"
nameconflict="overwrite"
>
FlismFlazim said on Oct 12, 2005 at 5:56 PM :
if you're using coldFusion this should work
<cffile
action="upload"
filefield="FILEDATA"
destination="D:\insert_path_on_server\#FORM.FILENAME#"
nameconflict="overwrite"
>
FlismFlazim said on Oct 13, 2005 at 3:57 PM :
Sorry for the double post above. If you're using php, here's a super simple way

$uploadDir = "/Library/Apache2/htdocs/your_upload_folder/";
$uploadFile = $uploadDir . $_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);

cheers
No screen name said on Oct 18, 2005 at 9:05 PM :
good. but what about asp uploader? is there any good offer about it?
if we use code above:
mn:fileReference= new FileReferenc
mn.upload("uploader.php")
any code in php page can upload mn file? or should change the mn to file?
sullis said on Oct 25, 2005 at 11:05 AM :
"If the file to be uploaded is bigger than approximately 10KB, the Windows Flash Players will first send a test upload POST with zero content prior to uploading the actual file in order to verify that the transmission is likely to be successful. The second POST will contain actual file content."

It's unfortunate that the Flash Player is sending two POST's to the server. I need write special code in my Java servlet to detect/ignore Flash's test POST.

I hope Macromedia fixes this behavior.
tsamu said on Nov 7, 2005 at 4:24 PM :
When swf calling FileReference.upload(handlerURL) method, the handler (which is php server script) can't see session cookies

Steps to Reproduce:
1. page1> setcookie(cookiename,value)
2. page2 swf> FileReference.upload(handlerURL)
3. handlerURL (serverscript)> getcookie(cookiename) return null
AlexCook said on Nov 10, 2005 at 10:51 AM :
Ok, Macromedia.

You give us the sample file, in the sample folder... but where is the PHP file the sample uses?

I don't understand why you wouldn't include the PHP file.
AlexCook said on Nov 10, 2005 at 10:55 AM :
Here's a modification of the PHP example someone posted.


----------------------------------------------------------------------
<?php

$uploadDir = '/home/user/folder/folder/';
$uploadFile = $uploadDir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
{
$writeStatus = "File uploaded successfully.";
// print "Here's some more debugging info:\n";
// print_r($_FILES);
}
else
{
$writeStatus = "unsuccessful!"
print_r($_FILES);
}

print("&writeStatus=$writeStatus");

?>
----------------------------------------------------------------------

Notice at the end it prints &writeStatus=$writeStatus ...
this would allow you to get the results of the upload in Flash.
Chuck Deisler said on Nov 12, 2005 at 7:40 AM :
Is it possible to return any values to the flash player from the upload url the same way you would use sendAndLoad()?
Fullman said on Nov 15, 2005 at 2:03 PM :
Is there a ASP/ASP.NET example of this functionality?

The only examples I've seen mentioned here and on other examples is both CF and PHP.

Also, the most recent copy contained in Flash 8's documentation for this method (upload (FileReference.upload method)) seems very out of sync with the copy on this page. The copy in the Flash 8 documentation contains quite a few empty code snippet boxes.

TIA
jdehaan said on Nov 16, 2005 at 10:19 AM :
AlexCook said on Nov 10, 2005 at 10:51 AM : "You give us the sample file, in the sample folder... but where is the PHP file the sample uses? I don't understand why you wouldn't include the PHP file."

We have included the PHP in the documentation. You can find it on this page:

http://livedocs.macromedia.com/flash/8/main/00001591.html

or search "PHP" in the Help panel.
adam2003 said on Nov 29, 2005 at 5:37 AM :
I have used the file ref to upload files and report in a dialog box if
sucessful.
This works fine when tested on IE on windows, but although the file
uploads ok from a Mac it does not run the onComplete command and so
the user does not think it has uploaded , it just says Uploading and goes
not further (although the file has uploaded)

Is this a mac player issue ? I have tried on Firefox and Safari

//Allow this domain
System.security.allowDomain("http://meanwhile.luton.ac.uk/");
import flash.net.FileReference;
// The listener object listens for FileReference events.
var listener:Object = new Object();

// When the user selects a file, the onSelect() method is called, and
// passed a reference to the FileReference object.
listener.onSelect = function(selectedFile:FileReference):Void {
//clean statusArea and details area
gui.statusArea.text = details.text = ""
// Flash is attempting to upload the image.
gui.statusArea.text += "Attempting to upload JPEG" + selectedFile.name
+ "\n";
// Upload the file to the PHP script on the server.
selectedFile.upload("upload.php");
removeMovieClip("newTip");
};

// the file is starting to upload.
listener.onOpen = function(selectedFile:FileReference):Void {
gui.statusArea.text += "Uploading " + selectedFile.name + "\n";
};

// the file has uploaded
listener.onComplete = function(selectedFile:FileReference):Void {
// Notify the user that Flash is starting to download the image.
gui.statusArea.text += "Upload finished.\nThanks " + selectedFile.name
+ " now online\n";

};
No screen name said on Nov 29, 2005 at 10:26 PM :
Is there a ASP/ASP.NET example of this functionality?
nectil said on Dec 12, 2005 at 4:05 AM :
!! Warning for Mac player !!
When you use the FileReference.upload(), the class add the port 80 to the request! For example, with the url :

http://www.nectil.com/upload.php

The real query will be sent at

http://www.nectil.com:80/upload.php

Please, Flash player team, remove the :80 !!! It's impossible to send it over HTTPS for mac users! thanks.
Miles Tinsley said on Dec 19, 2005 at 5:46 AM :
Yes, I agree. The bug when uploading files via Flash Player on a Mac
client, is very annoying! There doesn't appear to be any way around it!!
xbrotherx said on Dec 20, 2005 at 10:37 AM :
I have had a similar situation using HTTPS on both Mac and Windows Flash Players. I can get .upload to work correctly on Mac Safari and Windows IE through HTTPS if I put the fully-qualified path, including the SSL port 443, in the url parameter like so:

file.upload("https://www.somesite.com:443/cgi-bin/someScript.sh");

Just using the following does not work through HTTPS:

file.upload("/cgi-bin/someScript.sh");

And neither of them work on Mac Firefox or Windows Firefox.
No screen name said on Jan 4, 2006 at 4:08 AM :
If the file to be uploaded is bigger than approximately 10KB, the Windows Flash Players will first send a test upload POST with zero content prior to uploading the actual file in order to verify that the transmission is likely to be successful. The second POST will contain actual file content. For smaller files, the Flash Player will do a single upload POST with the file to be uploaded.

The Mac players currently do not do test upload POSTs.

What about Linux?thanks to flash team
No screen name said on Jan 6, 2006 at 7:29 AM :
Could anyone get this to work with a Java Servlet? Our JSP pages' file upload feature works perfectly on our Tomcat Server with Apache Commons File Upload and regular HTML forms. However, when Flash uploads the file, we get an error message regarding the stream. After some debugging, we noticed some errors on the header. I think it's the same error on Ruby (multipart message). Does anyone know a get around to this problem?
acctman said on Jan 9, 2006 at 6:44 PM :
is the a work around for the test post? cause what is happening is i'm getting multiple entries when trying to post variables.
ShadowKnyte said on Jan 10, 2006 at 3:51 PM :
ASP Solution that utilises AspUpload is as follows...
_____________________________________________________

Set Upload = Server.CreateObject("Persits.Upload")

'Uncomment the next line if you need to set user access to domain with username and password
'Upload.LogonUser "mydomain", "Administrator", "xxxxxxxxx"

'Set code page
Upload.CodePage = 65001

'Set to not overwrite files (True/False)
Upload.OverwriteFiles = False

' Limit file size (bytes)
Upload.SetMaxSize 5000000, True

' Intercept all exceptions to display user-friendly error
On Error Resume Next

'Set the path to the folder on server to write the files to
strPath = "C:\Inetpub\wwwroot\SamplePLOADS\"

'CREATE DIRECTORY IF IT DOES NOT EXIST
UPLOAD.CREATEDIRECTORY STRPATH, TRUE

' PERFORM UPLOAD
UPLOAD.SAVE STRPATH

STRFILEPATH = UPLOAD.FILES("SELECTEDFILE").PATH

' 8 IS THE NUMBER OF "FILE TOO LARGE" EXCEPTION
IF ERR.NUMBER = 8 THEN
'FILE IS TOO LARGE DO NOTHING
ELSE
IF ERR = 0 THEN
SELECT CASE UCASE(RIGHT(STRFILEPATH,4))
CASE ".JPG", ".GIF",".PNG"
'ACCEPTABLE FILE TO BE UPLOADED
CASE ELSE
'DELETE FILE
UPLOAD.FILES("FILE1").DELETE
END SELECT
END IF
END IF
_____________________________________________________

REMEMBER TO SET THE FOLDER PERMISSIONS ON THE SERVER TO ALLOW FILES TO BE WRITTEN!

ALSO MAKE SURE YOU GET OR UPDATE TO ASPUPLOAD VERSION 3.0.0.6 OR ABOVE AS IT WAS RELEASED TO WORK WITH THE FLASH 8 IMPLEMENTATION OF FILE UPLOADING, AND IS AVAILABLE HERE... HTTP://WWW.ASPUPLOAD.COM/
AJKERR SAID ON JAN 11, 2006 AT 12:34 PM :
IN ORDER TO GET FILE UPLOADING TO WORK WITH FLASH PLAYER 8 AND JAKARTA COMMONS FILE UPLOAD ON THE SERVER, WE HAD TO PATCH THE FILE UPLOAD SERVER CODE TO IGNORE THE EXCEPTION THAT WAS (CORRECTLY) BEING THROWN ON THE SERVER WHEN THE LAST SECTION IS PROCESSED.

THE CLASS THAT NEEDS TO BE PATCHED IS ORG.APACHE.COMMONS.FILEUPLOAD.FILEUPLOADBASE.

YOU'LL NEED TO REPLACE LINE 336:
MAP HEADERS = PARSEHEADERS(MULTI.READHEADERS());

...WITH THE FOLLOWING CODE:
MAP HEADERS = NULL;
TRY
{
HEADERS = PARSEHEADERS(MULTI.READHEADERS());
}
CATCH (MULTIPARTSTREAM.MALFORMEDSTREAMEXCEPTION E)
{
RETURN ITEMS;
}

NOT THE MOST ELEGANT FIX, BUT IT WORKS AS A STOPGAP UNTIL MACROMEDIA RELEASES AN UPDATE TO THE FLASH 8 PLAYER.
NO SCREEN NAME SAID ON JAN 19, 2006 AT 9:56 AM :
"FLASH PLAYER CAN UPLOAD FILES OF UP TO 100 MB"

WHY SUCH A LIMIT ?
IS THERE ANY WAY IT CAN BE INCREASED ?
SHIMI2 SAID ON JAN 19, 2006 AT 11:22 AM :
THE ISSUE THAT "NO SCREEN NAME SAID ON SEP 23, 2005 AT 10:15 AM" REPORTS IS A BUG THAT HAS BEEN FIXED FOR THE NEXT RELEASE OF FLASH PLAYER. THANK YOU, EVERYONE, FOR SUBMITTING INFORMATION ABOUT THIS BUG.
SHIMI2 SAID ON JAN 24, 2006 AT 3:27 PM :
IN RESPONSE TO THE QUESTION ABOUT TEST POSTS IN THE LINUX PLAYER - THERE CURRENTLY IS NO LINUX PLAYER THAT SUPPORTS FILE UPLOAD. WITH THE NEXT VERSION OF FLASH PLAYER, A LINUX VERSION WILL BE RELEASED.
FLASHMEASMILE SAID ON JAN 30, 2006 AT 1:47 PM :
IS THERE A WAY TO GET AN UPDATE FOR THE BUG THAT SHIMI2 SAID IS FIXED FOR THE NEXT RELEASE OF FLASH PLAYER?

IF NOT, CAN SOMEONE CLARIFY THE WORK-AROUND AJKERR DESCRIBED ON JAN 11, 2006? HOW DO I ACCESS THE FILEUPLOADBASE SOURCE FILE AND ACTUALLY EDIT IT? (I TRIED EXTRACTING THE JAR, BUT ONLY CAN ACCESS THE CLASS FILES...)

THANK YOU.
SHIMI2 SAID ON FEB 1, 2006 AT 11:51 AM :
NOTE: ALTHOUGH FLASH PLAYER HAS NO RESTRICTION ON THE SIZE OF FILES YOU CAN UPLOAD OR DOWNLOAD, THE PLAYER OFFICIALLY SUPPORTS UPLOADS OR DOWNLOADS OF UP TO 100 MB.
STREET_CROSSER SAID ON FEB 6, 2006 AT 4:00 AM :
I CONFIRM THE SESSION COOKIE NOT BEEING SENT WITH THE FILE-UPLOAD POST REQUEST IN FIREFOX 1.5 (NOT TESTED WITH 1.0.X).

THE MULTIPLE FILE UPLOAD FLASH COMPONENT IS USELLES UNTIL THIS BUG IS FIXED BECAUSE WE NEED A SESSION ON THE SERVER SIDE.

ALSO, THE FIRST EMPTY REQUEST FOR FILES BIGGER THAN 10K IS NOT APPLICATION PROGRAMMING FRIENDLY. I SHOULD BE ABLE TO DISABLE THIS BEHAVIOR BY USING A PARAMETER OR SOMETHING.
JT230 SAID ON FEB 7, 2006 AT 12:49 PM :
TO GET THE SOURCE CODE FOR FILEUPLOADBASE JUST GO TO THE JAKARTA.APACHE.ORG WEBSITE AND DOWNLOAD IT.

YOU CAN DOWNLOAD THE BINARY OR THE ENTIRE SOURCE.
NO SCREEN NAME SAID ON FEB 15, 2006 AT 3:42 AM :
HELLO,
EXCUSE FOR MY POOR LANGUAGE, BUT I'M FRENCH..

WHY THE UPLOAD FUNCTION SEND ONLY "APPLICATION/OCTET-STREAM
" IN THE POST'S HEADERS EVEN IF THE FILE IS A, FOR EXEMPLE, MSWORD FILE ?!

IF YOU RENAME A .EXE (LIKE A VIRUS..) FILE INTO A .JPG AND UPLOAD IT, THERE'S NO WAY TON CONTROLE THE RIGHT FILE TYPE...

IS THERE A SOLUTION TO WORK AROUND THIS PROBLEM ?

THANKS.
MONT1N SAID ON FEB 21, 2006 AT 5:24 AM :
THERE IS AN ISSUE WITH HTTP ERROR #406 THAT SEEMS TO BE A RESULT OF MOD_SECURITY AND APACHE. MOD_SECURITY CAN SCAN POST REQUESTS, AND AS THIS FLASH POST HEADER FOR THE FILEREFERENCE OBJECT IS MISSING A ":"-SIGN (THIS IS WHAT THE SERVER ADMINISTRATORS SAYS AT THE WEB HOSTING COMPANY I MOSTLY WORK WITH) MOD_SECURITY WILL BLOCK THAT REQUEST WITH A #406.

I HAVE ACCESS TO TWO ACCOUNTS AT THIS WEB HOST (ODERLAND.COM), WHICH BOTH USES AN APPLICATION WITH A FLASH IMAGE UPLOAD FEATURE. ON ONE OF THESE ACCOUNTS, WHICH IS HOSTED ON A SERVER WITHOUT A POST REQUEST SCAN, THIS FEATURE WORKS LIKE A CHARM. BUT ON THE OTHER ONE, WHICH IS HOSTED ON ANOTHER SERVER WHERE THE POST REQUEST SCAN IS ACTIVE, THIS FEATURE GETS THE #406 ON EVERY TRY.
LOG2E SAID ON FEB 26, 2006 AT 5:51 AM :
AS FOR THE #403 AND #406 ERRORS, TRY TO CREATE AN .HTACCESS FILE IN YOUR ROOT DIRECTORY WITH:

SECFILTERENGINE OFF
SECFILTERSCANPOST OFF

THIS SOLVED THE PROBLEM ON MY SERVER.
FRANK SF SAID ON MAR 14, 2006 AT 4:40 PM :
UPLOAD SESSION COOKIE BUG SOLUTION:
THIS IS HOW TO BYPASS THE BUG ON FIREFOX AND SAFARI WHERE THE SESSION COOKIE IS (UNFORTUNATELY) NOT SENT BY THE FLASH PLAYER.

- IN THE HTML PAGE CREATE A JAVASCRIPT FUNCTION GETCOOKIE() THAT RETURNS THE SESSION COOKIE LOCATED IN 'DOCUMENT.COOKIE' , FOR INSTANCE IF YOU ARE USING PHP IT SHOULD BE NAMED 'PHPSESSID' BY DEFAULT.

- CALL THIS FUNCTION FROM FLASH USING THE EXTERNAL INTERFACE:
VAR COOKIE = STRING(EXTERNALINTERFACE.CALL("GETCOOKIE"));

- APPEND THE COOKIE TO YOUR UPLOAD URL:
.UPLOAD( "/UPLOAD.PHP?"+COOKIE)

VOILA.

ATTENTION:
- DON'T REGENERATE THE COOKIE DURING A SERVER CALL FROM FLASH, BECAUSE THE JAVASCRIPT WILL RETURN ONLY THE COOKIE FROM THE HTML PAGE HOLDING THE SWF.
- UNFORTUNATELY THIS DOESN'T WORK ON OPERA, BECAUSE THE EXTERNAL INTERFACE DOES NOT SUPPORT IT.
- AND CLEAR YOUR COOKIES BEFORE TESTING OF COURSE...

HOPE THIS HELPS...

FRANK.
NO SCREEN NAME SAID ON MAR 31, 2006 AT 1:26 PM :
ACTUALLY IT'S EVEN WORSE THAN JUST THAT FIREFOX 1.5 DOESN'T SEND COOKIES WITH A POST. IT ACTUALLY SENDS THE MOST RECENT COOKIE (FOR THE SAME DOMAIN, IF ONE IS AVAILABLE) FROM *INTERNET EXPLORER*, WHICH IS PRETTY BAD AND MAKES NO SENSE AT ALL.

THE HACK FROM FRANK SF WORKS FINE AS A WORKAROUND, THOUGH.
PHILIPC SAID ON APR 13, 2006 AT 12:36 PM :
I ADDED THE COOKIE TO THE QUERY STRING OF THE URL AND AM STILL UNABLE TO GET THE UPLOAD FUNCTIONALITY TO WORK IN WINDOWS FIREFOX 1.5.01: FLASH 8,0,24. I KEEP GETTING AN ONIOERROR CALL. ANY OTHER SUGGESTIONS?
CAMERON74 SAID ON JUL 10, 2006 AT 5:30 PM :
I SUPPOSE THIS IS A TEMPORARY WORKAROUND THAT I GOT TO WORK FOR IGNORING THE DOUBLE POSTING IN PHP.

IF($_FILES['FILEDATA']['SIZE'] < 1000){
RETURN;
}
COGDEV SAID ON AUG 23, 2006 AT 11:33 AM :
CAN THIS BE USED TO SAVE A FILE TO LOCALHOST?

FOR EXAMPLE IF THE PHP WERE ON THE DESKTOP:

FILE.UPLOAD("FILE://LOCALHOST/C:/DOCUMENTS%20AND%20SETTINGS/USER/DESKTOP/UPLOAD.PHP")

AND IN THE PHP:
$UPLOADDIR = 'FILE://LOCALHOST/C:/DOCUMENTS%20AND%20SETTINGS/USER/DESKTOP/';
NAMGNAH SAID ON AUG 23, 2006 AT 8:28 PM :
"SHIMI2 SAID ON SEP 21, 2005 AT 4:58 PM" MENTIONED THAT THE FILEREFERENCE.UPLOAD() FUNCTION IS NON-BLOCKING.

I HAVE TO BUILD A FLASH APPLICATION WHICH ALLOW USERS TO UPLOAD MULTIPLE FILES.

I FOUND A SAMPLE CODE AT HERE, USING FILEREFERENCELIST:
HTTP://LIVEDOCS.MACROMEDIA.COM/FLASH/8/MAIN/WWHELP/WWHIMPL/COMMON/HTML/WWHELP.HTM?CONTEXT=LIVEDOCS_PARTS&FILE=00002204.HTML

===========================================
IMPORT FLASH.NET.FILEREFERENCELIST;
IMPORT FLASH.NET.FILEREFERENCE;

VAR LISTENER:OBJECT = NEW OBJECT();

LISTENER.ONSELECT = FUNCTION(FILEREFLIST:FILEREFERENCELIST) {
TRACE("ONSELECT");
VAR LIST:ARRAY = FILEREFLIST.FILELIST;
VAR ITEM:FILEREFERENCE;
FOR(VAR I:NUMBER = 0; I < LIST.LENGTH; I++) {
ITEM = LIST[I];
TRACE("NAME: " + ITEM.NAME);
TRACE(ITEM.ADDLISTENER(THIS));
ITEM.UPLOAD("HTTP://WWW.YOURDOMAIN.COM/");
}
}

<SNIP>
===========================================

THE ABOVE CODE WILL MAKE MUTLIPLE HTTP CONNECTIONS SIMULTANEOUSLY TO THE SERVER. IS THERE ANY SOLUTION SO THAT THE ABOVE CODE WILL UPLOAD FILES ONE BY ONE?

I WOULD REALLY APPRECIATE IF SOMEONE CAN GIVE A HAND ON THIS ISSUE.
THANKS IN ADVANCE!

-HANGMAN
:: ULTRANOL :: SAID ON SEP 1, 2006 AT 2:53 PM :
I SEE THAT ASPUPLOAD CHANGED SOMETHING IN ITSELF TO ACCOMODATE THE WAY FLASH SENDS POST DATA.

"AND IF I CANNOT USE ASPUPLOAD? I'M TRYING TO USE ASPSMARTUPLOAD / SAFILEUP / DUNDAS..."

I HAD THIS PROBLEM AND MANAGED TO BUILD MY OWN BINARY PARSER.
TRY IT, IT WORKS FINE!

---------------------

SET OBJFSO = SERVER.CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")

STRDIRETORIO = SERVER.MAPPATH(".")

RESPONSE.EXPIRES = 0
RESPONSE.BUFFER = TRUE
RESPONSE.CLEAR

INTBYTECOUNT = REQUEST.TOTALBYTES
BYTREQUESTBIN = REQUEST.BINARYREAD(INTBYTECOUNT)

SET OBJUPLOADREQUEST = SERVER.CREATEOBJECT("SCRIPTING.DICTIONARY")

BUILDUPLOADREQUEST BYTREQUESTBIN

SET OBJARQUIVO = OBJFSO.CREATETEXTFILE(STRDIRETORIO & "\FILE.JPG")

BYTVALOR = OBJUPLOADREQUEST.ITEM("FILEDATA").ITEM("VALUE")
FOR INTCONT = 1 TO LENB(BYTVALOR)
OBJARQUIVO.WRITE CHR(ASCB(MIDB(BYTVALOR, INTCONT, 1)))
NEXT

OBJARQUIVO.CLOSE

SUB BUILDUPLOADREQUEST(BYTREQUESTBIN)

INTPOSBEG = 1
INTPOSEND = INSTRB(INTPOSBEG, BYTREQUESTBIN, GETBYTESTRING(CHR(13)))

BYTBOUNDARY = MIDB(BYTREQUESTBIN, INTPOSBEG, INTPOSEND - INTPOSBEG)
INTBOUNDARYPOS = INSTRB(1, BYTREQUESTBIN, BYTBOUNDARY)

DO UNTIL (INTBOUNDARYPOS = INSTRB(BYTREQUESTBIN, BYTBOUNDARY & GETBYTESTRING("--")))

SET OBJUPLOADCONTROL = CREATEOBJECT("SCRIPTING.DICTIONARY")

INTPOSITION = INSTRB(INTBOUNDARYPOS,BYTREQUESTBIN,GETBYTESTRING("CONTENT-DISPOSITION"))
IF INTPOSITION > 0 THEN

INTPOSITION = INSTRB(INTPOSITION, BYTREQUESTBIN, GETBYTESTRING("NAME="))
INTPOSBEG = INTPOSITION + 6
INTPOSEND = INSTRB(INTPOSBEG, BYTREQUESTBIN, GETBYTESTRING(CHR(34)))
STRNAME = GETSTRING(MIDB(BYTREQUESTBIN, INTPOSBEG, INTPOSEND - INTPOSBEG))

INTPOSFILE = INSTRB(INTBOUNDARYPOS, BYTREQUESTBIN, GETBYTESTRING("FILENAME="))
IF INTPOSFILE > INTBOUNDARYPOS AND INTPOSFILE < INSTRB(INTBOUNDARYPOS + LENB(BYTBOUNDARY), BYTREQUESTBIN, BYTBOUNDARY) THEN

INTPOSBOUND = INSTRB(INTPOSEND, BYTREQUESTBIN, BYTBOUNDARY)

IF INTPOSFILE <> 0 AND INTPOSFILE < INTPOSBOUND THEN

INTPOSBEG = INTPOSFILE + 10
INTPOSEND = INSTRB(INTPOSBEG, BYTREQUESTBIN, GETBYTESTRING(CHR(34)))
STRFILENAME = GETSTRING(MIDB(BYTREQUESTBIN, INTPOSBEG, INTPOSEND - INTPOSBEG))
OBJUPLOADCONTROL.ADD "FILENAME", STRFILENAME

INTPOSITION = INSTRB(INTPOSEND,BYTREQUESTBIN,GETBYTESTRING("CONTENT-TYPE:"))
INTPOSBEG = INTPOSITION+14
INTPOSEND = INSTRB(INTPOSBEG,BYTREQUESTBIN,GETBYTESTRING(CHR(13)))
CONTENTTYPE = GETSTRING(MIDB(BYTREQUESTBIN,INTPOSBEG,INTPOSEND-INTPOSBEG))
OBJUPLOADCONTROL.ADD "CONTENTTYPE",CONTENTTYPE

INTPOSBEG = INTPOSEND+4
INTPOSEND = INSTRB(INTPOSBEG,BYTREQUESTBIN,BYTBOUNDARY)-2
STRVALUE = MIDB(BYTREQUESTBIN,INTPOSBEG,INTPOSEND-INTPOSBEG)

ELSE

INTPOSITION = INSTRB(INTPOSITION, BYTREQUESTBIN, GETBYTESTRING(CHR(13)))
INTPOSBEG = INTPOSITION + 4
INTPOSEND = INSTRB(INTPOSBEG, BYTREQUESTBIN, BYTBOUNDARY) - 2
STRVALUE = GETSTRING(MIDB(BYTREQUESTBIN, INTPOSBEG, INTPOSEND - INTPOSBEG))

END IF

END IF

OBJUPLOADCONTROL.ADD "VALUE", STRVALUE
OBJUPLOADREQUEST.ADD STRNAME, OBJUPLOADCONTROL

END IF

INTBOUNDARYPOS = INSTRB(INTBOUNDARYPOS + LENB(BYTBOUNDARY), BYTREQUESTBIN, BYTBOUNDARY)

LOOP

END SUB

FUNCTION GETBYTESTRING(STRSTRING)
FOR INTCONT = 1 TO LEN(STRSTRING)
STRCHAR = MID(STRSTRING, INTCONT, 1)
GETBYTESTRING = GETBYTESTRING & CHRB(ASCB(STRCHAR))
NEXT
END FUNCTION

FUNCTION GETSTRING(BYTSTRING)
GETSTRING = ""
FOR INTCONT = 1 TO LENB(BYTSTRING)
GETSTRING = GETSTRING & CHR(ASCB(MIDB(BYTSTRING, INTCONT, 1)))
NEXT
END FUNCTION
NO SCREEN NAME SAID ON SEP 21, 2006 AT 4:35 AM :
I HAVE BIG PROBLEM WITH UPLOADING IMAGES. USING FILEREFERENCE TO UPLOAD IMAGE AND PERL SCRIPT TO HANDLE UPLOAD. PERL SCRIPT WORKING CORECTLY. I TRY 10 TIMES TO UPLOAD SAME FILE. 3 TIMES WAS WRITTEN CORRECTLY, BUT IN OTHER 7 CASSES IMAGE HEADER IS CORUPT! THIS FILE WAS 35 KB.
WHAT IS HAPPENING HERE?

ORIGINAL BEGIN OF JPG FILE: ˙Ř˙Ŕ JFIF  ˙Ű C 
UPLOADED JPG FILE: ˙Ř˙Ŕ Ł3—$ŰŚÓW=?„
NO SCREEN NAME SAID ON SEP 26, 2006 AT 3:26 PM :
I AM HAVING PROBLEMS SETTING A $_SESSION VARIABLE IN THE UPLOAD HADLER FILE IN PHP, IN FIREFROX NOT IE. ANYONE ELSE?
_EKKU_ SAID ON OCT 30, 2006 AT 3:08 AM :
HAS ANYONE TRIED IF THIS COOKIEN POST BUG HAS BEEN FIXED IN FIREFOX 2.0?
GLAMM SAID ON OCT 30, 2006 AT 1:17 PM :
JUST ANOTHER CONFIRMATION: FILE UPLOAD PLUS SESSION COOKIES FAILS ON MAC WITH FIREFOX AND SAFARI, FLASH VERSIONS 8,0,27,0 AND 9,0,20,0. THE FILE GETS UPLOADED JUST FINE BUT THE COOKIES DO NOT GET SET IN THE HTTP REQUEST HEADER.

THIS TYPE OF BUG MAKES ME RECONSIDER POSSIBLY USING FLEX FOR APPLICATION DEPLOYMENT AND REVERT TO JAVASCRIPT + HTML OR JAVA.
EXPLODESIGN SAID ON NOV 1, 2006 AT 4:13 PM :
WHAT IS THE EXACT SOLUTION OF HTTP ERRORS( 403,406,500) ? I SEARCHED NET WHOLE NIGHT BUT CAN NOT FIND A SOLUTION.
I TRIED THE .HTACCESS FILE BUT IT DIDN'T HELP... SHOULD MY SERVICE PROVIDER MUST DO SOMETHING, OR IT'S ALL ABOUT MY CODES ?
I GAVE THE WRITE PERMISSIONS TO MY FILES..I NEED YOUR HELP..
PAULDECOURSEY SAID ON NOV 7, 2006 AT 11:19 AM :
I AM ALSO UNABLE TO GET ANY WORKAROUNDS TO WORK. PROBLEM IS COOKIES ARE BEING SENT WITH POST IN FIREFOX, THEY ARE THE COOKIES FROM INTERNET EXPLORER. I CANNOT SEND THE COOKIES ON THE QUERYSTRING, SERVLETS DO NOT READ THEM FROM THERE AND APPARENTLY ACEGI WILL NOT ACCEPT THE SESSIONID FROM THE QUERYSTRING AS WELL.

IS THERE NO WAY TO SET AND CLEAR A COOKIE IN FLASH?
MICHAELBARSOTTI SAID ON NOV 7, 2006 AT 2:39 PM :
IN THE DOCUMENT ABOVE IT SAYS "YOU CAN SEND DATA TO THE SERVER WITH THE UPLOAD() CALL BY APPENDING PARAMETERS TO THE URL." HOW, EXACTLY, WOULD ONE DO THAT?

I TRIED REPLACING LINE 14 WITH:
IF (!FILE.UPLOAD("UPLOAD.ASP?CONTENT-TYPE=MULTIPART/FORM-DATA;BOUNDARY=AAB03X&CONTENT-DISPOSITION=FORM-DATA;NAME=FILEDATA;FILENAME=" + FILE.NAME + "&CONTENT-TYPE=APPLICATION/OCTET-STREAM")) {
BUT IT DOESN'T SEEMED TO BE HELPING.
NO SCREEN NAME SAID ON NOV 21, 2006 AT 1:54 AM :
OK, I NEED THE WITH AND HEIGHT OF A IMAGE SELECTED WITH A FILEREFERENCE.... BUT I DON'T KNOW THIS PARAMETERS OF FILEREFERENCE... SOMEONE KNOW THIS PARAMETERS?
NO SCREEN NAME SAID ON NOV 28, 2006 AT 3:18 PM :
HEY ALL,
JUST A LITTLE NOTE. I WENT THROUGH A FEW HOURS OF TROUBLE SHOOTING TO FIGURE IT OUT.

IF YOUR FLASH .UPLOAD ISN'T WORKING WHEN YOU GO LIVE.. CHECK THE DIRECTORY STRUCTURE.

I USUALLY PUT A _GLOBAL VARIABLE INFRONT OF MY LOADVARIABLES AND LOADMOVIE JUST FOR QUICK CHANGES WHEN TESTING LOCALLY AND WHEN UPLOADING TO A LIVE SERVER. AS IT TURNS OUT... .UPLOAD IS RELATIVE TO WHERE THE SWF IS (I THINK). SO I PUT A _GLOBAL.LOADVARSPREFIX INFRONT OF MY UPLOAD STRING I.E.
_GLOBAL.LOADVARSPREFIX="SWF_AND_DEPENDANTFILES/"
//_GLOBAL.LOADVARSPREFIX="HTTP://WWW.SITE.COM/SWF_AND_DEPENDANTFILES/"
//COMMENTED FOR GOING LIVE

//ONSELECT
UPLOADSTRING="UPLOADER.PHP?ID=XXX&VAR=XXX&";
FILE.UPLOAD(_GLOBAL.LOADVARSPREFIX + UPLOADSTRING);


ON THE HTML I'D DO SOMETHING LIKE
<EMBED SRC="SWF_AND_DEPENDANTFILES/SWF_FILE.SWF">

NORMALLY.. FOR LOADVARIABLES, I'D NEED THAT GLOBAL VARIABLE. WITH .UPLOAD I DO NOT... AS IT APPEARS IT LOOKS FOR THE UPLOAD SCRIPT IN THE SAME DIRECTORY AS THE SWF.

THIS IS JUST A NOTE...
NO SCREEN NAME SAID ON DEC 6, 2006 AT 2:53 PM :
WHEN I TRY TO UPLOAD FROM BEHIND A PROXY I ALWAYS GET AN "HTTP ERROR 407". IS THERE A WAY TO AVOID THIS ? MAY BE IT'S A SECURITY POLICY PROBLEM ?
THIS NOTE IN THE DOCUMENTATION SEEMS TO TELL IT'S NOT POSSIBLE : "FOR UPLOADS THAT USE THE PLUG-IN OR ACTIVEX CONTROL, AND FOR UPLOADS AND DOWNLOADS THAT USE THE STAND-ALONE OR EXTERNAL PLAYER, THE FILE TRANSFER FAILS." BUT I SUCCEED IN USING IT ON SOME EXAMPLES SITE.
NO SCREEN NAME SAID ON DEC 17, 2006 AT 1:24 PM :
HOW DO I PASS ADDITIONAL VARIABLES TO A PHP SCRIPT. I HAVE TRIED AMENDING THE UPLOAD URL..I.E..
UPLOAD(UPLOAD.PHP?DESC=TEST&CLASS=TEST)
THE UPLOAD WORKS BUT NO VARIABLES ARE PASSED TO PHP. HAVE TRIED TO RETREIVE THEM IN PHP WITH $_GET AND $_REQUEST..
ANY HELP?
AMARSHAH SAID ON DEC 28, 2006 AT 4:06 PM :
HI,
I AM JUST WONDERING, ANY ONE FIND ANY WAY TO GET THE SERVER RESPONSE FOR FLASH FILE UPLOAD??
MTPROD SAID ON JAN 12, 2007 AT 8:26 AM :
I AM ACTUALLY USING ADOBE FLASH PLUGIN VERSION 9.0.21.78 ON KUBUNTU 6.06 AND FILE UPLOAD IS WORKING WELL.

YOU JUST HAVE TO INSTALL FLASHPLUGIN-NONFREE PACKAGE FROM MULTIVERSE REPOSITORY, MORE INFO HERE:
HTTP://WIKI.DEBIAN.ORG/FLASHPLAYER
RAZ-L SAID ON JUL 18, 2007 AT 5:13 PM :
AS I DON'T THINK THERE IS A WAY FOR ASP.NET TO FIND A SESSION (INPROC) FROM A SESSION ID, AS IT IS POSSIBLE IN PHP/JAVA, HERE'S A TRICK TO MAKE IT POSSIBLE.
AS DESCRIBED IN THE OLDER POSTS, USE JAVASCRIPT, REMOTING OR FLASHVARS TO GET THE 'REAL' SESSIONID COOKIE VALUE AND ADD IT TO THE URL REQUEST BY DOING SOMETHING LIKE THIS :

"HTTP://YOURSERVER.COM/UPLOAD.ASPX?ASPSESSID="+REALSESSIONID

AND PUT THE FOLLOWING C# IN YOUR SERVERSIDE GLOBAL.ASAX FILE (TESTED FOR .NET2.0) :

PROTECTED VOID APPLICATION_BEGINREQUEST(OBJECT SENDER, EVENTARGS E)
{
// FF/OPERA FILEREFERENCE UPLOAD SESSION COOKIE BUG PATCH
TRY{
IF (HTTPCONTEXT.CURRENT.REQUEST.QUERYSTRING.GET("ASPSESSID") != NULL)
{
HTTPCOOKIE SESSIONCOOKIE = HTTPCONTEXT.CURRENT.REQUEST.COOKIES.GET("ASP.NET_SESSIONID");
SESSIONCOOKIE.VALUE = HTTPCONTEXT.CURRENT.REQUEST.QUERYSTRING.GET("ASPSESSID");
HTTPCONTEXT.CURRENT.REQUEST.COOKIES.SET(SESSIONCOOKIE);
}
}CATCH(EXCEPTION){}

WHAT IT DOES IS SIMPLY OVERWRITE THE WRONG COOKIE ONE WITH THE ONE PASSED AS GET, BEFORE THE REQUEST HITS THE UPLOAD PAGE.

BUT SERIOUSLY ADOBE, FILEREFERENCE IS A MESS... WHAT'S THE POINT OF THE FALSE UPLOAD ? AND THE WAY TOO LIMITED RETURN STATUS ?

&NBSP;

RSS FEED | SEND ME AN E-MAIL WHEN COMMENTS ARE ADDED TO THIS PAGE | COMMENT REPORT

CURRENT PAGE: HTTP://LIVEDOCS.ADOBE.COM/FLASH/8/MAIN/00002225.HTML