【问题标题】:getting temporary file path using javascript [duplicate]使用javascript获取临时文件路径[重复]
【发布时间】:2018-01-21 16:16:29
【问题描述】:

有没有办法获取

上传的文件的临时文件路径
<input type="file"/>

然后通过 ajax 将其发送到 PHP 并在那里获取文件并存储它

用代码解释会很有帮助 谢谢你

【问题讨论】:

  • 这没有多大意义。我可以想到一种方法,但它非常复杂且毫无意义。您似乎对XY Problem 有一个不好的情况。你真正想达到什么目标?
  • 我想使用 Ajax 以完整的 JSON 格式将我的表单数据与上传到服务器的文件一起发送到服务器,但我不想使用 javascript formdata 对象来实现它
  • 然后需要读取文件数据。文件的路径无关紧要。
  • 如何读取文件数据,请您帮帮我

标签: javascript php ajax


【解决方案1】:

客户端没有可以通过 Javascript 找到的临时文件/路径。您正在使用 HTTP 请求发送文件(二进制数据),这将使服务器创建一个临时文件。

当然,您可以在 server/php 生成的响应中添加路径。这可以通过获取配置upload_tmp_dir 或调用sys_get_temp_dir 来完成。

你可以在这里找到更详细的答案:How do I get the PHP Uploads directory?

【讨论】:

    【解决方案2】:

    (编辑为不使用FormData,尽管我强烈建议这样做)

    javascript:

    第一个base64文件编码函数:

    function getBase64(file, callback) {
       var reader = new FileReader();
       reader.readAsDataURL(file[0].files[0])
       reader.onload = () => {
           callback(reader.result);
       };
    }
    

    现在当用户点击上传按钮时执行这段代码:

    var data;
    getBase64($('input:file'), (r) => { data = r });
    $.ajax({
        url: "ajax_php_file.php", // Url to which the request is send
        method: "POST",             // Type of request to be send, called as method
        data: { file: data }
    });
    

    php:

    <?php
        if (isset($_POST['file'])) {
            $data = $_POST['file'];
            file_put_contents('img.jpg', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));
        }
    ?>
    

    【讨论】:

    • 问题是他不想用FormData
    • 好吧,可能会稍微编辑一下。
    • 将其编辑为base64编码图像并上传编码字符串。
    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 2012-08-19
    • 2013-10-08
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2012-04-11
    相关资源
    最近更新 更多