Returning assetbundle download progress on mobile

Hello all,

I’ve been trying to show the assetbundle download progress on Android and iOS. I found this post…

I understand it has to do with the return header, but I’m new to this and my be missing something simple. The post shows the php with just one assetbundle, “myAssetBundle.unity3d”. I tried to adjust it to retrieve any assetbundle from the path I post to it…

Here is my c#:

string location = "http://www.mysite.com/media/" + assetWebLink;
		string url = "http://www.mysite.com/media/assetBundle_retrieve.php";
		WWWForm form = new WWWForm();
		form.AddField("myAction", "download_myAssetBundle");
		form.AddField("bundleLocation", location);
		WWW assetBundle_get = new WWW(url, form);

		//set text to download progress
		while(!assetBundle_get.isDone)
		{
			Debug.Log(assetBundle_get.progress);
			int dlProgress = Mathf.FloorToInt(assetBundle_get.progress * 100);
			purchaseButtonLabel.text = dlProgress.ToString() + "%";
			yield return null;
		}

		yield return assetBundle_get;

		Debug.Log(assetBundle_get.text);

my php:

if($_POST[‘myAction’]==“download_myAssetBundle”) {

	$location = $_POST['bundleLocation'];
	
//	$escaped_loc = pg_escape_literal($location);

//	$attachment_location = $escaped_loc;
	header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
	header("Cache-Control: public");
	header("Content-Type: application/zip");
	header("Content-Transfer-Encoding: Binary");
	header("Content-Length:".filesize($location));
	header("Content-Disposition: attachment; filename=".basename($location));
	readfile($location);
	echo "Working properly";
	Die();
}

I took out the $escape_loc because it was adding ‘’ around the file location.

I get this error from the debug text…

Warning: filesize(): stat failed for http://www.mysite.com/media/asset_bundles/android/bundlename.assetbundle in /mysite/media/assetBundle_retrieve.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at /mysite/media/assetBundle_retrieve.php:50) in /mysite/media/assetBundle_retrieve.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at /mysite/media/assetBundle_retrieve.php:50) in /mysite/media/assetBundle_retrieve.php on line 51

How can I get the progress if I can’t modify the header to send it?

Thanks in advance for any direction!

Jeff

Got it. Thanks brianturner! I looked at the filesize error and found the location was not coming in right. I added a name field for the filename as well because using the location was incorrect.

$location = $_POST['bundleLocation'];

$bundleName = $_POST['bundleName'];

$attachment_location = $location;
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length:".filesize($attachment_location));
header("Content-Disposition: attachment; filename=".$bundleName);
readfile($attachment_location);

Works perfectly!

hi, 3jeffd
please tell where to paste this php code in server and with what name.