support remote file fetching
This commit is contained in:
parent
5690962bb8
commit
dd245f40de
@ -166,6 +166,15 @@ function changeUI()
|
|||||||
*/
|
*/
|
||||||
function uploadFile(f, id)
|
function uploadFile(f, id)
|
||||||
{
|
{
|
||||||
|
if(typeof f === "string"){
|
||||||
|
var fx = new File([], 'remote');
|
||||||
|
fx.type = "text/plain";
|
||||||
|
fx.size = 0;
|
||||||
|
fx.url = f;
|
||||||
|
|
||||||
|
f = fx;
|
||||||
|
}
|
||||||
|
|
||||||
if(f instanceof Blob || f instanceof File)
|
if(f instanceof Blob || f instanceof File)
|
||||||
{
|
{
|
||||||
if($('#' + id) === null){
|
if($('#' + id) === null){
|
||||||
@ -225,7 +234,7 @@ function uploadFile(f, id)
|
|||||||
xhr.upload.addEventListener('abort', function(evt) { uploadProgress(evt, id); });
|
xhr.upload.addEventListener('abort', function(evt) { uploadProgress(evt, id); });
|
||||||
xhr.addEventListener('readystatechange', function(evt) { uploadProgress(evt, id); });
|
xhr.addEventListener('readystatechange', function(evt) { uploadProgress(evt, id); });
|
||||||
|
|
||||||
xhr.open("POST", "upload.php?filename=" + f.name);
|
xhr.open("POST", "upload.php?filename=" + f.name + (f.url !== undefined ? "&remote=" + encodeURIComponent(f.url) : ""));
|
||||||
xhr.send(f);
|
xhr.send(f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -285,6 +294,12 @@ function handleFilePaste(evt)
|
|||||||
var file_t = file.getAsFile();
|
var file_t = file.getAsFile();
|
||||||
file_t.name = "clipboard.png";
|
file_t.name = "clipboard.png";
|
||||||
uploadFile(file_t, fid);
|
uploadFile(file_t, fid);
|
||||||
|
}else if(file.kind === 'string' && file.type === 'text/plain'){
|
||||||
|
var file_t = file.getAsString(function(url){
|
||||||
|
if(url.indexOf('http://') === 0 || url.indexOf('https://') === 0) {
|
||||||
|
uploadFile(url);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
upload.php
20
upload.php
@ -24,8 +24,24 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$rawf = fopen('php://input', 'rb');
|
$source = isset($_GET["remote"]) ? $_GET["remote"] : "php://input";
|
||||||
$tmpf = fopen('php://temp', 'rb+');
|
|
||||||
|
$rawf = fopen($source, 'rb');
|
||||||
|
|
||||||
|
if(isset($_GET["remote"])){
|
||||||
|
$meta_data = stream_get_meta_data($rawf);
|
||||||
|
foreach($meta_data["wrapper_data"] as $hd){
|
||||||
|
if(strpos($hd, "Content-Type") === 0){
|
||||||
|
$nt = explode(": ", $hd);
|
||||||
|
$mime = $nt[1];
|
||||||
|
}else if(strpos($hd, "Content-Disposition") === 0){
|
||||||
|
$nn = explode("filename=", $hd);
|
||||||
|
$fname = str_replace("\"", "", $nn[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpf = fopen("php://temp", 'rb+');
|
||||||
stream_copy_to_stream($rawf, $tmpf);
|
stream_copy_to_stream($rawf, $tmpf);
|
||||||
rewind($tmpf);
|
rewind($tmpf);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user