标签: readfile

PHP readfile将内容长度添加到输出

我正在使用PHP readfile函数来读取文件并将其打印出来:print readfile ('anyfile').这样可行,但文件的内容长度也会添加到字符串的末尾.为什么?

php readfile

6
推荐指数
1
解决办法
4379
查看次数

如何让拥有所需权限的用户通过php下载文件?

我有一个php文件,作为我希望人们下载的所有文件的守门人,谁有足够的特权.

我使用的代码将文件抛给用户

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=\"".$public_filename."\""); 
header("Content-Transfer-Encoding: Binary"); 
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-length: ".$f_filesize); 
readfile($file_path);
Run Code Online (Sandbox Code Playgroud)

大多数文件都相当大...... 400mb-10GB.

什么是一个很好的方法来做到这一点,并保持真正的位置+文件名的秘密,所以人们不能直接链接到文件,但有必要通过我的download.php?文件= ID网守链接?

谢谢

编辑:我不是问如何进行用户身份验证,所有这一切都已完成.我只是问我的做法,是一个大规模的好主意.如果我继续阅读10GB文件,它似乎可能会导致内存问题.

php download readfile

6
推荐指数
1
解决办法
4015
查看次数

如何通过PHP/readfile提供.dmg文件?

我没有运气从我的网上商店服务.dmg.我将代码简化为以下调试,但无论我得到什么零字节文件:

header('Content-Type: application/x-apple-diskimage');   // also tried octet-stream
header('Content-Disposition: attachment; filename="My Cool Image.dmg"');
$size = filesize('/var/www/mypath/My Cool Image.dmg');
header('Content-Length: '.$size);
readfile('/var/www/mypath/My Cool Image.dmg');
Run Code Online (Sandbox Code Playgroud)

这个代码适用于我提供的许多其他文件类型:bin,zip,pdf.有什么建议?谷歌教授不是我的朋友.

php dmg readfile http-headers

6
推荐指数
2
解决办法
1419
查看次数

通过NodeJS使用HTML文件加载JS文件的正确方法

我不能将服务的defualt.htm页面的头部内容包含在"工作"中.dom中的html加载,只有CSS和JS文件失败.还有更好的选择吗?我喜欢将解决方案保留在NodeJS中,但也可以打开socket.io并表达.

谢谢,下面是我正在使用的.

NodeJS为页面服务

var http = require('http'),
fs = require('fs');

fs.readFile(__dirname+'/default.htm', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(port.number);
});
Run Code Online (Sandbox Code Playgroud)

Default.html页面

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" href="objects/css/site.css" type="text/css" />
    <script src="objects/js/jquery.min.js" type="text/javascript"></script>
    <script src="objects/js/site.min.js" type="text/javascript"></script>
</head>

<body></body>    

</html>
Run Code Online (Sandbox Code Playgroud)

javascript static-html readfile node.js

6
推荐指数
1
解决办法
1万
查看次数

从管道读取时Win32 ReadFile挂起

我正在创建一个子进程,并读取其输出.当子进程创建output(cmd /c echo Hello World)时,我的代码工作正常,但是如果进程没有创建output(),则ReadFile将挂起cmd /c echo Hello World > output.txt.我只是在流程终止后才开始阅读.

我做错了什么吗?无论如何使用同步模式执行此操作,还是必须使用异步模式?所有这一切都发生在一个单独的线程中,所以我不认为异步模式会给我任何好处,除非它是让这个工作的唯一方法.非常感谢!

saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
saAttr.bInheritHandle = TRUE; 
saAttr.lpSecurityDescriptor = NULL; 

CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0);
SetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0);

memset(&piProcInfo, 0, sizeof(PROCESS_INFORMATION));
memset(&siStartInfo, 0, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO); 
siStartInfo.hStdError = g_hChildStd_OUT_Wr;
siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;
siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
CreateProcess(NULL, commandWideString, NULL, NULL, TRUE, 0, NULL, NULL, &siStartInfo, &piProcInfo);

while(1)
{
    GetExitCodeProcess(piProcInfo.hProcess, &processExitCode);
    if(processExitCode != STILL_ACTIVE)
        break;
    else
        Sleep(1);
}

*output = (char *)calloc(32, sizeof(char));
processOutputSize = 0;
while(1) …
Run Code Online (Sandbox Code Playgroud)

winapi hang readfile

6
推荐指数
2
解决办法
1万
查看次数

PHP readfile文件的大小越来越大

是否可以在远程文件上使用PHP readfile函数,该文件的大小未知且大小正在增加?这是场景:

我正在开发一个脚本,从第三方网站下载视频,同时将视频转码为MP3格式.然后通过readfile将此MP3传送给用户.

用于上述过程的查询如下:

wget -q -O- "VideoURLHere" | ffmpeg -i - "Output.mp3" > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

因此,文件同时被提取和编码.现在,当上述过程正在进行中时,我开始通过readfile将输出mp3发送给用户.问题是编码过程需要一些时间,因此取决于用户下载速度,readfile在整个文件被编码之前达到假定的EoF,导致用户接收部分内容/不完整文件.

我第一次尝试修复此问题是对用户下载应用速度限制,但这并非万无一失,因为编码时间和速度因负载而异,这仍然会导致部分下载.

那么有没有办法以这样的方式实现这个系统,我可以同时提供下载和编码,并保证将完整的文件发送给最终用户?

任何帮助表示赞赏.

编辑:回应彼得,我实际上正在使用fread(读取readfile_chunked):

 <?php
 function readfile_chunked($filename,$retbytes=true) {
            $chunksize = 1*(1024*1024); // how many bytes per chunk
            $totChunk = 0;
            $buffer = '';
            $cnt =0;
            $handle = fopen($filename, 'rb');
            if ($handle === false) {
                return false;
            }
            while (!feof($handle)) {
                //usleep(120000); //Used to impose an artificial speed limit
                $buffer = fread($handle, $chunksize);
                echo $buffer;
                ob_flush();
                flush();
                if ($retbytes) {
                    $cnt += strlen($buffer); …
Run Code Online (Sandbox Code Playgroud)

php ffmpeg wget download readfile

6
推荐指数
1
解决办法
605
查看次数

使用Pipes在Haskell中读取和写入二进制数据

我试图在常量内存中读取和写入很多整数.我已经想出了如何将内存写入内存,但还没弄清楚如何将它们读回来.

import Control.Lens (zoom)
import System.IO (IOMode(..), withFile)
import Pipes
import qualified Pipes.Prelude as P
import qualified Pipes.ByteString as PB    
import qualified Pipes.Parse as P
import qualified Pipes.Binary as P

intStream :: Monad m => Proxy x' x () Int m b
intStream = go (0 :: Int) where
   go i = yield i >> go (i + 1)

decoder :: Monad m => Int ->  P.Parser P.ByteString m [Int]
decoder n = zoom (P.decoded . P.splitAt n) P.drawAll

main …
Run Code Online (Sandbox Code Playgroud)

io haskell writefile readfile haskell-pipes

6
推荐指数
1
解决办法
346
查看次数

如何使用FileReader逐行读取

感谢您的关注.

我创建了一个程序,我正在使用登录表单和注册表单.一旦用户注册他们的电子邮件,他们的密码将被保存到submit.txt.然后他们将返回登录表单并输入保存到的电子邮件和密码submit.txt.

在我的代码中,我使用Register文件的写文件和Login Form的Read文件.但是,它不起作用.我在用于读取文件的代码中知道我的问题.你可以帮我实现吗?

非常感谢你的帮助.

 if (checkPassword(usern, hash)) {
    System.out.println("Logged in!");
    ChooseWindow ptb = new ChooseWindow();
    ptb.setVisible(true);
    LoginWindow.this.dispose();
 } else {
    System.out.println("Wrong password");
 }

 public boolean checkPassword(String username, String pass) {
    try {
        FileReader inFile = new  FileReader("/users/Ender/Desktop/GetUser/submit.txt");
        BufferedReader inStream = new BufferedReader(inFile);
        String inString;

        while ((inString = inStream.readLine()) != null) {}
        inStream.close();                       
    }catch (IOException e) {
        e.printStackTrace();
    }
    return false;
 }
Run Code Online (Sandbox Code Playgroud)

java swing filereader readfile

6
推荐指数
1
解决办法
2万
查看次数

Arduino逐行读取SD文件

我试图从连接到我的Arduino MEGA的SD卡上逐行读取文本文件"Print1.txt".到目前为止,我有以下代码:

#include <SD.h>
#include <SPI.h>
int linenumber = 0;
const int buffer_size = 54;
int bufferposition;
File printFile;
char character;
char Buffer[buffer_size];
boolean SDfound;


void setup()
{
  Serial.begin(9600);
  bufferposition = 0;
}

void loop() 
{
  if (SDfound == 0)
  {
    if (!SD.begin(53)) 
    {
      Serial.print("The SD card cannot be found");
      while(1);
    }
  }
  SDfound = 1;
  printFile = SD.open("Part1.txt");


  if (!printFile)
  {
    Serial.print("The text file cannot be opened");
    while(1);
  }

  while (printFile.available() > 0)
  {
    character = printFile.read();
    if (bufferposition …
Run Code Online (Sandbox Code Playgroud)

c++ arduino sd-card readfile line-by-line

6
推荐指数
1
解决办法
1万
查看次数

Python如何在打开后删除文件时读取文件

我很难理解Python在被open编辑后删除文件时如何读取文件的概念.这是代码:

>>> import os
>>> os.system('cat foo.txt')
Hello world!
0
>>> f
<_io.TextIOWrapper name='foo.txt' mode='r' encoding='UTF-8'>
>>> os.system('rm -f foo.txt')
0
>>> os.system('cat foo.txt')
cat: foo.txt: No such file or directory
256
>>> f.read()
'Hello world!\n'
>>>
Run Code Online (Sandbox Code Playgroud)

文本和二进制模式给出相同的结果.

我也尝试过这个大小超过1Gb的大文件,删除后也会读取它们.open即使对于非常大的文件,操作也几乎瞬间发生.

如果打开的文件不再存在,Python从哪里获取数据?

我跑了这个测试

  • python 3.4.3 / 3.5.2
  • ubuntu 14.04 / 16.04

python linux file readfile

6
推荐指数
1
解决办法
150
查看次数