Hyperlink code to force ftp download - General Topics

What is the proper format for html hyperlink code that will cause a file to download to the phone and not have the browser try to open it? I have files that are text, they are GPS files, but they don't have a TXT extension and IE keeps opening the files as text.
If it matters (but I don't think so) I'm running a reasonably stock HTC WM 6.0 ROM on a Hermes.
Regards,
GPSGary

You want to do this server-side? Or client-side?

FTP download code
I'm trying to write html code that will cause a file on my web site to download directly to the phone file directory without the browser trying to open it. It would be extra useful if I could make it download to a specific existing directory.
Regards,
GPSGary

Well, I hate to say this but you can't. That's the simple answer.
The complicated answer is that you need to set up some sort of server-side script to place the headers manually, or you need to modify some of the settings for your server's remote access handler. On Apache servers, this can be done via a file called .htaccess.
If you have a .htaccess file that you can modify, just enter this at the top of it:
Code:
RewriteEngine on
RewriteCond %{REQUEST_URI} \.(gps|cab)$
RewriteRule .* - [T=application/octet-stream,L]
Note that I didn't know the extension you're talking about so I put "gps" up there. I also added "cab" because many servers have a tendency to not send the proper headers for cab files. Feel free to add other extensions using this same method.
Again, this is assuming you have an Apache server, and you have the privileges to modify a .htaccess file.

Forcing ftp type download
No Apache server so isn't there some other way?
Anyone got a good Java script?
Regards,
GPSGary

Hi there,
as far as I know, you don't need java:
ftp-links are always proposed to "Save File", so your link should be ftp://www.domain.com/folder/filename.txt
This will cause any browser to download the file instead of opening it.
In that case, you definitely need an real ftp access to your file ... (ftp = FIleTransferProtocol).
Best regards,

I've encountered this before and resorted to zipping the file. You can also spoof the system by renaming the file to *.AAA The user, of course, will have to rename the file on their end. I have better luck with .zip unless it's for my own use. Any file which is recognized natively by the browser will open within the browser. This includes .txt, .htm, .html, and any other file associations you've successfully loaded.

gepp said:
No Apache server so isn't there some other way?
Anyone got a good Java script?
Regards,
GPSGary
Click to expand...
Click to collapse
That's what I'm tellin' ya. It's IMPOSSIBLE to do this with client-side scripting, i.e., Javascript.
I'd like to help you get this resolved. Can you clarify some things for me?
Are you using Geocities, Fortunecity, Google Pages, or one of the other free site services out there?
Do you understand the distinction I'm making between client-side and server-side scripting?
What server software are you using, if not Apache?
Are you able to utilize a PHP or Perl engine? (I can tell you how to send the file headers manually through either of those.)
I promise I'm not trying to be rude or anything. I just want to make sure we're both on the same page here. I can tell you the best way of getting this resolved, but I need to know where you stand, and I need to know the extent of your web development knowledge.

PHP or Perl will work
I'm on a Yahoo small business server. I've used PHP so that will work on my site and I know enough to fiddle with it if need be. Less proficient with Perl but have some exposure.
Regards,
GPSGary

Awesome. That works. Here is what you will basically be doing with PHP then.
PHP:
ob_start()
$GPSFile = '/path/to/file.gps'; //This is where the file is located on your Yahoo Business server
$DownloadName = "File.gps"; //This is the name that pops up when you're prompted to download the file (it can be different than the name above).
$TypeOfFile = 'text/plain'; //If you still have issues, change this to 'application/octet-stream'
header("Cache-Control: public, must-revalidate");
header("Pragma: hack");
header("Content-Type: " . $TypeOfFile);
header("Content-Length: " .(string)(filesize($GPSFile)) );
header('Content-Disposition: attachment; filename=' . $DownloadName);
header("Content-Transfer-Encoding: binary\n");
od_end_clean();
readfile($GPSFile);

Related

Downloading files on XDA2

Forgive me if this has been covered elsewhere, but can't find an answer through searching.
When I try to dowload files from a forum, Pocket IE downloads the DOWNLOAD.PHP file - which of course don't do nothin'.
Is it possible to download files from this site directly onto PPC using Pocket IE?
Cheers.
Open the PHP file in a text editor (like Word, I suppose)
There should be a link (it may be a relative link) to the file in there.
If you don't know enough about HTML & HTTP to be able to figure it out, don't download files from forums.
madkat said:
Open the PHP file in a text editor (like Word, I suppose) There should be a link (it may be a relative link) to the file in there.
Click to expand...
Click to collapse
Had a look at a text dump of the file (after emailing it to my web-based email account so I could view it on my terminal at work). No link there.
madkat said:
If you don't know enough about HTML & HTTP to be able to figure it out, don't download files from forums.
Click to expand...
Click to collapse
Thank you for your advice. I was planning to drive home tonight, but since I don't know enough about the internal cumbustion engine, I suppose I'd better walk.
Stuart Walker
www.hyperchamber.com
Good answer
Good answer, Stuart!! I like it a lot!!

SQL CE 3.5 - First App

I'm working on developing my first WM 6 App using SQL CE 3.5 . I'm sure there are other apps out there that do what mine does, but I'm just wanting the experience of developing it.
I'm working on a fairly simple app to track gas mileage and such. But, for some reason, whenever I debug it, the app can't seem to find the database file. I get an error saying: "The database file cannot be found. Check the path to the database. [ Data Source = .\GasTrackerDB.sdf ]"
I can browse with file explorer on the device and find the database in the same directory as the deployed application, so I'm not really sure where to go from here..
I'm doing everything through the IDE, so all of the code is generated for me to connect to the database.
Anybody experienced enough to help me troubleshoot this stupid problem?
i have been looking for an app that does the same thing as the one you are working on.
when it is finished please pm me. i wish i knew more programing, if i did i would help you.
Try
Code:
string database = string.Format(@"{0}\GasTrackerDB.sdf", GetApplicationPath());
public static string GetApplicationPath()
{
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
return path;
}
I did figure it out after messing around with it. I think it has to do with the way VS2008 deploys the app on the emulator...
When I hard-code the path to the database file, it works. So, my app will just have to be installed on the local device and not the SD card
Don't hard-code the path! The method GetApplicationPath() returns the application path. This is also important when installing on OS with different language.
heliosdev said:
Don't hard-code the path! The method GetApplicationPath() returns the application path. This is also important when installing on OS with different language.
Click to expand...
Click to collapse
How is that possible when the Connection String was generated by the IDE? Here's what the .xsd says:
Code:
<Connection ConnectionStringObject="Data Source=\program files\gastracker\GasTrackerDB.sdf" IsAppSettingsProperty="false" Modifier="Assembly" Name="GasTrackerDBConnectionString" ParameterPrefix="@" Provider="Microsoft.SqlServerCe.Client.3.5" />
On application start create the connection string "Data Source = " + database (like post #3)
This connection string can then be passed wherever you need to connect to the database.
That's the problem.. the IDE created all the stuff for the connection string and I don't know enough about it to create everything needed manually.
How do you connect to the db? What are you calling for retrieving data from db? How do you insert data to the db? All these actions need an object which somehow knows the connectionstring. And this string can/must be changed.
Hmm.. That doesn't seem to be a valid function name. I'm using .NET CF 3.5 .I'll keep looking.
Well, I wrote my own function to get the execution path, but I still can't figure out how to modify the connection string at runtime.
This crap is ridiculous. I don't understand why it doesn't "just work" when I let the IDE do everything...
Well, I FINALLY made it work.. i ended up going through the xsd file and changing all the code that creates queries. I had to replace every instance of:
Code:
CType(Me._commandCollection(0), Global.System.Data.SqlServerCe.SqlCeCommand).Connection = New Global.System.Data.SqlServerCe.SqlCeConnection("Data Source=.\GasTrackerDB.sdf;")
With:
Code:
CType(Me._commandCollection(0), Global.System.Data.SqlServerCe.SqlCeCommand).Connection = New Global.System.Data.SqlServerCe.SqlCeConnection("Data Source=" & GetAppPath() & "\GasTrackerDB.sdf;")
That had to be done for every one of my queries created through the designer. Thankfully I only had 5!
Great! Keep in mind that changes in generated code can get lost when the ide is recreating the code. Just keep an eye on it when doing changes in this area!
heliosdev said:
Great! Keep in mind that changes in generated code can get lost when the ide is recreating the code. Just keep an eye on it when doing changes in this area!
Click to expand...
Click to collapse
Yeah, I already ran into that one If it gets to be too much of a pain, I'll see if I can create some sort of compile time script to do a find and replace.. But I haven't spent enough time going back and fixing it yet
go to
http://www.connectionstrings.com/
They have everything you need to build your connection string. From my experience, it's okay to let the IDE build everything EXCEPT the connection string....

Possible to use "Save" method in a local .htm file to save XML updates?

I am researching the possibility of using MSXML to update XML records on Windows CE devices using only pocket internet explorer. I was able to open and edit XML files using a local web page, but could not successfully save the results of an update. I tried the "save" method of a ActiveXObject("Microsoft.XMLDom") object. This works fine on a PC as long as I save the webpage with the .hta extension, but results in a Permission Denied error when I save the web page with the .htm/.html extension. Win CE doesn't seem to support the .hta extension.
The two biggest restrictions for my project are:
1) Cannot "install" software (.cab,.exe) on the devices due to security policy and
2) There is no data connectivity on the devices.
So my questions are, "Is it possible to save a file using javascript inside a local web page on a Win CE/Windows Mobile device? If so, how?" The file happens to be XML, but the solution need not involve only XML objects as I can readily access the content as plain text.
My best guess is that it is not possible without some sort of windows CE equivalent of the pc .hta file. Anyone? I appreciate any hints/comments that can help.
Thanks,
Dan

[IDEA] And what about file association ?

When I search in the wp7 forum I see few thread about file association in wp7 but I just remark that it's not so difficult to do using the excellent wp7 root tools SDK:
Code:
string Me = "1ff297cf-853f-4c7c-b9ca-1d255cb4c387".ToUpper(); //our Application's AppId
string Format = ".xml";
//set the defaut file association for .xml to FileAssoc instead of xmlfile
Registry.SetValue(RegistryHyve.ClassesRoot, Format, "Default", "FileAssoc");
//create the corresponding registry key
try { Registry.DeleteKey(RegistryHyve.ClassesRoot, "FileAssoc"); }
catch { }
Registry.CreateKey(RegistryHyve.ClassesRoot, "FileAssoc");
//create the key BrowseInPlace (I don't know why, I just do it, it takes one line)
Registry.SetValue(RegistryHyve.ClassesRoot, "FileAssoc", "BrowseInPlace", 0x0);
//and the app that must open .xml file (our app)
Registry.CreateKey(RegistryHyve.ClassesRoot, "FileAssoc\\shell\\open\\command");
Registry.SetValue(RegistryHyve.ClassesRoot, "FileAssoc\\shell\\open\\command", "Default", "app://" + Me + "/_default?type=FileAssoc&file=%s");
But if each application try to play with those settings it wil be the mess in the phone that's why I suggest that someone create an app that manage file associations for the user to choose what application he want use for a given file type and to support more file type (like .epub or .rar).
moreover the application that create File association must use native code but it's not necessarily the case for the application that read the file it would allow developers to publish this app on the marketplace (by adding an other source like skydrive or url) and the application that create File association would just be a big plus for Interop-unlocked phones.
Here is an app that display xml file in a textbox it's just an exemple of how it works:
fbe.am/8ld ==> xap
fbe.am/8le ==> source
What do you think ?
I actually knocked up an app very similar to this a little while ago, I didn't get around to finishing it but it was fully capable of searching the registry and compiling a list of known file extensions. As well as searching the installation directories of app's for certain .xml which contained the file extension that the app wanted to be associated with.
It was all written as a managed app, and I don't know if someone would want to look at it, but if there is some interest I can put it up.

new to application development I need something explained

I have been working on an app that I've been coding in HTML 5 CSS and JavaScript.. here is a website that I went to for software that I I'm able to use to compile my HTML 5 Javascript and CSS files. the software from this website just packages it all up into a single apk file for me to install. the problem is that I get a different icon in the file name that I don't want. what exactly does this program do. all I'm trying to figure out is where the strings come from for the app title and where the iPhone comes from from the app. and what exactly does it mean when the application is being signed and how can I change this signature.
the software I'm talking about comes from a website who is donating domain name is mrchay which you can Google search

Categories

Resources