如何请求单个文件作为对象

时间:2017-01-13 16:14:05

标签: javascript php jquery xmlhttprequest

我刚开始学习javascirpt,php大约2天。我面临的问题是我已经在服务器根目录下有一个x.dcm文件,我已经知道该路径(例如http://localhost:8888/...。) 我的问题是如何从服务器上简单地获取该文件,可能是这样的:

var file= 'http://localhost:8888/....';      ////file is not an object

我问这个问题,因为我已经知道如何使用输入法:

<input type="file" name="file" id="file">
<script>
    $('#file').on('change',function(e){
         var file = e.target.file;            ///file is an object
      });
</script>

但这不是我想要的,我想要的是使用现有的文件而不是输入。

所以整个事情就是:

<form id="input" method="post" enctype="multipart/form-data">
<input type="file" id="fileToUpload" name="fileToUpload">
</form>

我首先做一个输入来上传一些文件,然后是脚本

<script>

$("form#input").submit(function(){

    var formData = new FormData($(this)[0]);
$.ajax({
    url: 'segmentation.php',
    type: 'POST',
    data: formData,
    async: false,
    success: function (html) {
        $('#segbound').html(html);
    },
    cache: false,
    contentType: false,
    processData: false
});

return false;
});
</script>

我发送此文件(例如image.dcm)在服务器端执行某些操作(运行exec),然后在预期路径(http://localhost:8888/...中)生成另一个图像(imgproc.dcm)。然后接下来就是我在屏幕上显示处理后的图像。要做到这一点,我需要使用一个叫做基石的js,以及它中的函数imageLoader.fileManager.get(file) 哪个文件是我要显示的文件。

当我如上所述使用var file = e.target.file;从输入中选择时,它完美无缺,然后我检查文件类型它是[文件对象]。 但是,当我想简单地显示“imgproc.dcm&#39;通过使用var file= 'http://localhost:8888/....';文件类型不是我的问题的对象,我怎样才能简单地抓住已知的路径图像作为对象。

或者,为了改进这一点,可以在服务器端进行处理后直接获得返回(生成的imgproc.dcm),然后使用该返回(也许给它一个id ...不知道)来显示(调用基石功能imageLoader.fileManager.get(file)

在服务器端,它看起来像:

<?php
$target_dir = "/Applications/MAMP/htdocs/dicomread/temp/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
if (file_exists($target_file)) {
    echo "file has already been uploaded.";
    $uploadOk = 0;
}


if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";

} else {
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file)) {
        echo "The file ". basename( $_FILES['fileToUpload']['name']). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

    $cmd = "/Applications/MAMP/htdocs/dicomread/abc 2>&1";
    $Output_fileName = "imgproc.dcm";//$_FILES['fileToUpload']['name'];

    exec("$cmd $target_file $Output_fileName);

    echo "<br/>done";

?>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

将fopen与URL一起使用到文件中:

$file = fopen("http://localhost:8888/x.dcm", "r");

请参阅fopen:http://php.net/manual/en/function.fopen.php