Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing the full path of the file when it is browsed using php

So far I wrote a script so that I can browse for a file and see the printed name of the file. Here is the script:

 <form action="upload.php" method="post" enctype="multipart/form-  data">
 Select: 
 <input type="file" name="fileToUpload" id="fileToUpload">
 </form>

When I hit the browse button and choose a file, only the name of the file gets printed on my web page (My web-browser is Firefox and I am using a local server). Is there a way to print the whole address of the file? What I have found on the web so far were mostly suggesting ways when we know in advance "/path/to/file". But how can it be done if I randomly choose a file? If there is no way to do it with PHP because of security issues according to:

How to get full path of selected file on change of <input type=‘file’> using javascript, jquery-ajax?,

Is it possible t do it with C, C++, html, etc?

I really need to show the local path of the directory. What are the alternatives? The answer is it can't be done? I found this website http://www.htaccesstools.com/articles/full-path-to-file-using-php/

Don't know how it works though.

The other alternative would be to define a fixed path and let the user only choose that directory and since it is known I can print it out. Does it make sense?

like image 336
Jack Avatar asked Oct 14 '15 16:10

Jack


People also ask

How can I get full image path in PHP?

Write PHP script, to upload image and get stored into DB php if(isset($_POST)) { $name = $_POST['name']; $email = $_POST['email']; $to_upload_path = ""; if(isset($_FILES) && ! empty($_FILES)) { $filename = $_FILES["profile_pic"]["name"]; $to_upload_path = "uploads/".

How can I get full path of uploaded file in HTML using PHP?

php $dir = dirname(__FILE__); echo "<p>Full path to this dir: " . $dir . "</p>"; echo "<p>Full path to a . htpasswd file in this dir: " .

How do I find the path of a file in PHP?

To get the exact path of file, then, you can use realpath(). In between the round brackets of the function, type the name of the file. $dir = dirname("folder/myphp/fileDir.

What is __ DIR __ in PHP?

The __DIR__ can be used to obtain the current code working directory. It has been introduced in PHP beginning from version 5.3. It is similar to using dirname(__FILE__). Usually, it is used to include other files that is present in an included file.


1 Answers

Older browsers used to allow unrestricted access to the full path, so it's not impossible, but due to security concerns, your best answer will be a workaround.


Internet Explorer


HTA Application

If you're working locally, one option is that you can run your page as an HTML Application. Sadly this uses Internet Explorer as the engine. But if you can get away with an HTA, this does what you want:

<!--test.hta-->
<HTML>
<HEAD>
<HTA:APPLICATION ID="testFile" BORDER="thick" BORDERSTYLE="complex"/>
<TITLE>HTA - Test file</TITLE>
</HEAD>
<BODY>
<input type="file" onchange="alert(this.value)">
</BODY>
</HTML>

Trusted Site

A much better option, is simply to use Internet Explorer and then add your page to Internet Explorer's trusted sites. Then your solution is as simply as:

<input type="file" id="fileUpload" onchange="alert(this.value)">

Here's how to add a site to your trusted sites:

step 1 step 2

Custom Security Level

You can also enable this behavior globally for Internet Explorer:

method 2


Firefox


Firefox does not appear to have support for grabbing the full URL. But as mentioned here there does seem to exist a "mozFullPath" property:
https://developer.mozilla.org/en-US/docs/Web/API/File/mozFullPath

I tried it in my browser and it seems to be a non-existent property. I cannot find any documentation anywhere regarding how to take advantage of this property. But it's a property to keep an eye out for in case it ever becomes useful.


HTML5


In HTML5, you can write this.files[0] to refer to the File object. Properties include "name" and "lastModifiedDate", "size", and "type" as mentioned here: https://developer.mozilla.org/en-US/docs/Web/API/File

In HTML5 you can actually work with blobs and create an object url from the selected file and show a preview. This can be done with URL.createObjectURL(...) then creating an image and settings its src to the resulting temporary url. See this fiddle.(credit goes to this post)

Finally, you might greatly enjoy:

https://blueimp.github.io/jQuery-File-Upload/

like image 199
Ultimater Avatar answered Oct 24 '22 14:10

Ultimater