473,395 Members | 1,677 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

automated upload with PHP

I work for an animal hospital trying to use PHP to store an animal's
dental x-rays to a file server.

I can browse for the xray on the local desktop computer then click
"Upload Image". This works fine. The doctors want fewer steps to
follow. So, it was asked if I can configure the browser to load/submit
the image 'xray.tif' each time they click "Upload Image" instead of
the doctor/animal technician having to look for for dental x-ray
image.

Does PHP support such a feature to pull/load a file of the client's
computer? My three PHP books aren't helping, but I am probably looking
in the wrong direction.

Thanks.

Steve

Mar 29 '07 #1
9 3858
On 29 Mar, 17:38, "Steve Poe" <steve....@gmail.comwrote:
I work for an animal hospital trying to use PHP to store an animal's
dental x-rays to a file server.

I can browse for the xray on the local desktop computer then click
"Upload Image". This works fine. The doctors want fewer steps to
follow. So, it was asked if I can configure the browser to load/submit
the image 'xray.tif' each time they click "Upload Image" instead of
the doctor/animal technician having to look for for dental x-ray
image.

Does PHP support such a feature to pull/load a file of the client's
computer? My three PHP books aren't helping, but I am probably looking
in the wrong direction.

Thanks.

Steve
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.

Mar 29 '07 #2
On 29 Mar, 18:25, "shimmyshack" <matt.fa...@gmail.comwrote:
On 29 Mar, 17:38, "Steve Poe" <steve....@gmail.comwrote:
I work for an animal hospital trying to use PHP to store an animal's
dental x-rays to a file server.
I can browse for the xray on the local desktop computer then click
"Upload Image". This works fine. The doctors want fewer steps to
follow. So, it was asked if I can configure the browser to load/submit
the image 'xray.tif' each time they click "Upload Image" instead of
the doctor/animal technician having to look for for dental x-ray
image.
Does PHP support such a feature to pull/load a file of the client's
computer? My three PHP books aren't helping, but I am probably looking
in the wrong direction.
Thanks.
Steve

sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System) http://nsis.sourceforge.net/Main_Page to wrap up everything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.

Mar 29 '07 #3
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.

oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pageto wrap up everything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.

Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.

Steve
Mar 30 '07 #4
On Mar 29, 8:29 pm, "Steve Poe" <steve....@gmail.comwrote:
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pagetowrap up everything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.

Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.

Steve
Hi Steve -
Would it suit your requirement to hard code the path into the file
upload box? The user still has to click "upload" but will not have to
find the file each time.

Aerik

Mar 30 '07 #5
On 30 Mar, 04:49, "Aerik" <asyl...@gmail.comwrote:
On Mar 29, 8:29 pm, "Steve Poe" <steve....@gmail.comwrote:
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pagetowrapup everything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.
Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.
Steve

Hi Steve -
Would it suit your requirement to hard code the path into the file
upload box? The user still has to click "upload" but will not have to
find the file each time.

Aerik


active scripting is slightly different, it will run on the windows box
where the tiffs are. php on the linux server isnt used at all. I
thought you question was really about "automatic form submission" but
this isnt allowed for security, so you have to program on the client
computer itself. You can do this in any language of course, and
because you seemed familiar with php, I just thought why not use php
on the client too.
For instance, my desktop here does a whole load of things at night,
all using php. It scans direcories and uploads files to an ftp server,
backs stuff up, copies files, and logs the results.

What I would do is
a) download and use a file/folder watcher like log monitor
http://www.freeware-guide.com/download/index2.html
b) set it to automatically run a program (like copy blah to network
drive blah) which uploads the changes
c) write a small program that takes a path and filename and uploads it
to the linux machine over ftp, or if you script using c#, you can just
copy the file there using a mapped drive and samba.

You dont need your users to interact with this process. It is done
automatically. If the images need to get to the file server in real
time, then you can use the watcher, otherwise you can run cronw 2
(sourceforge) to sweep them all there at night.

The reason I keep steering away from http uploads is because they tend
not to be as robust as ftp. FTP can support resume, and other nice
features like compression, (if your code does). You can though script
an automatic form upload using c# or php or whatever, which is just a
script - rather than one that runs in a browser. If you like c#
or .NET check out codeproject for more.

Mar 30 '07 #6
On Mar 29, 8:49 pm, "Aerik" <asyl...@gmail.comwrote:
On Mar 29, 8:29 pm, "Steve Poe" <steve....@gmail.comwrote:
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pagetowrapup everything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.
Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.
Steve

Hi Steve -
Would it suit your requirement to hard code the path into the file
upload box? The user still has to click "upload" but will not have to
find the file each time.

Aerik
Aerik,

Hard-coding would solve this since the file name would be
the same each time, I could change the name of the
button "process image" instead of upload but it would still
grab the image locally. How would you hard-code the location?

In my example, the xray will be stored in c:\xrays_images and the file
will be called xray.tif.

Thanks for the feedback.

Steve

Mar 30 '07 #7
On Mar 30, 1:37 am, "shimmyshack" <matt.fa...@gmail.comwrote:
On 30 Mar, 04:49, "Aerik" <asyl...@gmail.comwrote:
On Mar 29, 8:29 pm, "Steve Poe" <steve....@gmail.comwrote:
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pagetowrapupeverything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.
Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.
Steve
Hi Steve -
Would it suit your requirement to hard code the path into the file
upload box? The user still has to click "upload" but will not have to
find the file each time.
Aerik

active scripting is slightly different, it will run on the windows box
where the tiffs are. php on the linux server isnt used at all. I
thought you question was really about "automatic form submission" but
this isnt allowed for security, so you have to program on the client
computer itself. You can do this in any language of course, and
because you seemed familiar with php, I just thought why not use php
on the client too.
For instance, my desktop here does a whole load of things at night,
all using php. It scans direcories and uploads files to an ftp server,
backs stuff up, copies files, and logs the results.

What I would do is
a) download and use a file/folder watcher like log monitorhttp://www.freeware-guide.com/download/index2.html
b) set it to automatically run a program (like copy blah to network
drive blah) which uploads the changes
c) write a small program that takes a path and filename and uploads it
to the linux machine over ftp, or if you script using c#, you can just
copy the file there using a mapped drive and samba.

You dont need your users to interact with this process. It is done
automatically. If the images need to get to the file server in real
time, then you can use the watcher, otherwise you can run cronw 2
(sourceforge) to sweep them all there at night.

The reason I keep steering away from http uploads is because they tend
not to be as robust as ftp. FTP can support resume, and other nice
features like compression, (if your code does). You can though script
an automatic form upload using c# or php or whatever, which is just a
script - rather than one that runs in a browser. If you like c#
or .NET check out codeproject for more
Thanks. I am not ready for C# yet (but, I've started reading about
Mono). While I am not new to PHP, I humblely admit my coding skills
are novice-like. I program enough to fix the program for the first-
stage before my boss has me on some other I.T-related project.

Thanks again.

Steve
Mar 30 '07 #8
On Mar 30, 7:50 pm, "Steve Poe" <steve....@gmail.comwrote:
On Mar 29, 8:49 pm, "Aerik" <asyl...@gmail.comwrote:
On Mar 29, 8:29 pm, "Steve Poe" <steve....@gmail.comwrote:
sure, you can script on the client using what is called active
scripting.
its nice and familiar, so you would either
1) have your script one once per day and upload any images not already
uploaded from a set of folders
2) configure explorer so you can right click and select upload image,
your php script would be run in the bvackground with argument such as
c:\path\to\php -r "%1"
and it would do the rest.
Why not use FTP if you are scripting this, as it will be nice and
robust and can interact is a predicatable way with your fileserver -
providing it can have an ftp serve running on it, like filezilla
server.
oops I should have added, that if you have a few computers you need to
install this on you could use NSIS (Nullsoft Scriptable Install
System)http://nsis.sourceforge.net/Main_Pagetowrapupeverything
including the script that makes the right click functionality between
tiffs and the php script, and distribute that.
Thanks for your help (and the link). I am not familar with
implementing
FTP through PHP. It's mainly PHP with HTML forms. The PHP app runs on
a
Linux box (hopefully this does not matter) and I believe it also has
ftp access. At this point, there will only be one computer that the
PHP application will need to automatically load
the TIF image. The file will be saved in a directory called xrays off
of the C:\
drive.
Steve
Hi Steve -
Would it suit your requirement to hard code the path into the file
upload box? The user still has to click "upload" but will not have to
find the file each time.
Aerik

Aerik,

Hard-coding would solve this since the file name would be
the same each time, I could change the name of the
button "process image" instead of upload but it would still
grab the image locally. How would you hard-code the location?

In my example, the xray will be stored in c:\xrays_images and the file
will be called xray.tif.

Thanks for the feedback.

Steve
file value attribute is read only.
Assuming you don't want to pay for an Active-X component, the only way
to do this programmatically is to alter the security settings of
Firefox, and make sure your users know to always use FF.
(you could force that using
<!--[if IE 5]>
<SCRIPT LANGUAGE="Javascript">
alert("Use Firefox for this application");
</SCRIPT>
<P>Firefox is safer and just plain better!</P>
<![endif]-->
Now courtesy of http://www.captain.at/ajax-file-upload.php here is the
method:
type about:config and hit enter, type applets in the filter field,
then double click
signed.applets.codebase_principal_support so it is set to true.
(when you run the code ON THE PRODUCTION DOMAIN you see a pop up
allowing you to derestrict the security for this domain, when you are
happy check the remember my answer and allow to prevent your users
seeing the pop up)
You understand I wouldn't go this way at all, because while you own
and run the domain, this is JUST the kind of setting that someone who
uses XSS to gain entry to your intranet needs to completely won half
your file system!)

you've already got a php script that will take the upload but here it
is anyway reproduced from the site above: (it isn't particularly
secure)

<?php
print_r($_FILES);
?>
<hr>
<?php
print_r($_POST);

//this will cause the file to appear when uploaded,
//in the same folder as this post.php php script
$fpath = dirname(__FILE__).'/';
//or use $fpath = '/path/to/upload/directory/';

// move (actually just rename) the temporary file to the real name
move_uploaded_file ( $_FILES{myfile}{tmp_name}, $fpath.$_FILES{myfile}
{name} );

// convert the uploaded file back to binary

// javascript "escape" does not encode the plus sign "+", but
"urldecode"
// in PHP make a space " ". So replace any "+" in the file with %2B
first

$filename = $fpath.$_FILES{myfile}{name};
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

$contents = preg_replace("/\+/", "%2B", $contents);

$handle = fopen($filename, "w");
fwrite($handle, urldecode($contents));
fclose($handle);

?>
and here is the html markup with script, some lines will be broken,
but go through it and check, and if you cant get it working email me,
and I'll send you the file.
Note I have changed a line at the top to get the filename
automatically, instead of from the form field, you now dont need the
file input field markup to be visible to the user of course (although
you might still need it to be present - I havent checked through the
js code)

as already said you will gt a warning, allow and then allow again, and
it should work, it posts to post.php by default, in the first instance
set it up to test using the file included in this post, I tested it
just now and it works just fine

<html>
<body>
<script>
var url = "post.php";
var binary;
var filename;
var mytext;

function upload() {
//here is how you could take the value from the form allowing your
users to browse first
//filename = ////document.getElementById('myfile').value;

//but hey you want it to be AUTOMATIC, I was surprised it only had one
f in tif.
filename = 'C:\\xrays_images\\xray.tif';

mytext = document.getElementById('mytext').value;
document.getElementById('ajaxbutton').disabled = true;

// request local file read permission
try {

netscape.security.PrivilegeManager.enablePrivilege ("UniversalXPConnect");
} catch (e) {
alert("Permission to read file was denied.");
}

// open the local file
var file = Components.classes["@mozilla.org/file/local;
1"].createInstance(Components.interfaces.nsILocalFile );
file.initWithPath( filename );
stream = Components.classes["@mozilla.org/network/file-input-stream;
1"].createInstance(Components.interfaces.nsIFileInput Stream);
stream.init(file, 0x01, 00004, null);
var bstream = Components.classes["@mozilla.org/network/buffered-
input-stream;1"].getService();
bstream.QueryInterface(Components.interfaces.nsIBu fferedInputStream);
bstream.init(stream, 1000);
bstream.QueryInterface(Components.interfaces.nsIIn putStream);
binary = Components.classes["@mozilla.org/binaryinputstream;
1"].createInstance(Components.interfaces.nsIBinaryInp utStream);
binary.setInputStream (stream);

// start AJAX file upload in 1 second
window.setTimeout("ajax_upload()", 1000);
}

function ajax_upload() {
// request more permissions
try {

netscape.security.PrivilegeManager.enablePrivilege ("UniversalXPConnect");
} catch (e) {
alert("Permission to read file was denied.");
}

http_request = false;
http_request = new XMLHttpRequest();
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}

// prepare the MIME POST data
var boundaryString = 'capitano';
var boundary = '--' + boundaryString;
var requestbody = boundary + '\n'
+ 'Content-Disposition: form-data; name="mytext"' + '\n'
+ '\n'
+ mytext + '\n'
+ '\n'
+ boundary + '\n'
+ 'Content-Disposition: form-data; name="myfile"; filename="'
+ filename + '"' + '\n'
+ 'Content-Type: application/octet-stream' + '\n'
+ '\n'
+ escape(binary.readBytes(binary.available()))
+ '\n'
+ boundary;

document.getElementById('sizespan').innerHTML = "requestbody.length="
+ requestbody.length;

// do the AJAX request
http_request.onreadystatechange = requestdone;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "multipart/form-data;
boundary=\"" + boundaryString + "\"");
http_request.setRequestHeader("Connection", "close");
http_request.setRequestHeader("Content-length", requestbody.length);
http_request.send(requestbody);

}

function requestdone() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
result = http_request.responseText;
document.getElementById('myspan').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
document.getElementById('ajaxbutton').disabled = false;
}
}

</script>

<form>
Text: <input type="text" id="mytext" name="mytext" size="40">
<br>
File: <input type="file" id="myfile" name="datafile" size="40"><br>
<input type="button" id="ajaxbutton" value="AJAX IT"
onclick="upload();">
</form>

<div id="sizespan"></div>
<hr>
<div id="myspan"></div>

</body>
</html>
NOW do you wish you had done the other thing!!

Mar 30 '07 #9
>file value attribute is read only.

Oh crud. Sure is. Can't find any workarounds either... sorry about
that.

Mar 31 '07 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Konstantin Zakharenko | last post by:
Hello, Our QA team have running a lot of test scripts (for automated regression testing), they run them on the different databases (Oracle/MS SQL). Several of those tests are dependent on the...
2
by: mparisi | last post by:
I hope that there is someone who can help me. I have written a process to entirely automate a sequence of web pages. It works great and I spent a ton of time on it since I am a novice C#...
1
by: Jeff | last post by:
I'm actually stuck! Can't believe it... so I'd appreciate some help. What I'm doing is enabling users of an ASP.NET 1.1 Web application to update a table in a SQL Server 2000 database. To make...
2
by: shahram.shirazi | last post by:
Hi I am looking to develop an application that provides decision support through various graphs and charts using a mysql backend. My problem is between the data collection and data...
5
by: murrayatuptowngallery | last post by:
I'm caught in a classic finger-pointing situation. My hosting company's server appears to be automatically inserting JS tags into a JS-free html page that has an image inked to a 2nd page with...
9
by: mike | last post by:
Hi all, What do you people do (if anything) to help with automated access-plan checking of static-SQL on DB2 LUW v8.2.2 ? Sometimes after we rebind, DB2 will choose a "bad" plan in certain...
1
by: paulgerardo | last post by:
Hi there, i have a problem, and i tried to firuge out but i really need help. I have 2 txt files with these info: MOVIES.TXT***
2
by: Michiel Sikma | last post by:
Hello everybody. I'm currently involved in a site building project in which we're going to use the Google Maps API. The user will be able to browse the site by looking over a really large image,...
1
by: =?Utf-8?B?UmljaGFyZCBCaXJk?= | last post by:
Hello, I have an issue with the recent Windows Automated Update disabling my ATI All-In-Wonder video capture card in Windows XP. Then when I reload the ATI software, the card works until the next...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.