我想要实现的是:
在前端,我使用html5文件api来读取文件,然后使用ajax将文件的内容上传到php后端,如果文件大小很小就可以了.但是,如果文件足够大,则会导致chrome崩溃.所以我使用file.slice将大文件拆分成块,当所有块都上传到php时,将块合并为一个完整的块.
代码如下:
前端:
<style>
#container {
min-width:300px;
min-height:200px;
border:3px dashed #000;
}
</style>
<div id='container'>
</div>
<script>
function addDNDListener(obj){
obj.addEventListener('dragover',function(e){
e.preventDefault();
e.stopPropagation();
},false);
obj.addEventListener('dragenter',function(e){
e.preventDefault();
e.stopPropagation();
},false);
obj.addEventListener('drop',function(e){
e.preventDefault();
e.stopPropagation();
var ul = document.createElement("ul");
var filelist = e.dataTransfer.files;
for(var i=0;i<filelist.length;i++){
var file = filelist[i];
var li = document.createElement('li');
li.innerHTML = '<label id="'+file.name+'">'+file.name+':</label> <progress value="0" max="100"></progress>';
ul.appendChild(li);
}
document.getElementById('container').appendChild(ul);
for(var i=0;i<filelist.length;i++){
var file = filelist[i];
uploadFile(file);
}
},false);
}
function uploadFile(file){
var loaded = 0;
var step = 1024*1024;
var …Run Code Online (Sandbox Code Playgroud) 想要将用户输入的文件作为文本进行简单读取.
可以依赖于现代浏览器的使用,所以我使用FileReader(它就像一个魅力).
reader.readAsText(myfile, encoding);
Run Code Online (Sandbox Code Playgroud)
我知道encoding默认为UTF-8.
但是,由于我的用户将从各种来源(Windows,Mac,Linux)和各种浏览器上传文件,我要求用户通过选择框提供编码.
因此,例如对于西欧的Windows文本文件,我希望用户选择例如windows-1252.
我无法找到FileReader支持的编码列表(假设这至少取决于浏览器).
我不是要求自动确定编码,我只是想以这样的方式填充我的选择框:
<select id="encoding">
<option value="windows-1252">Windows (Western Latin)</option>
<option value="utf-8">UTF-8</option>
<option value="...">...</option>
</select>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我不想使用任何主要的第三方库.
奖金问题:
有没有一种简单的方法来获得有意义的价值翻译,例如cp10029意味着Mac(中欧)?
我正在开发一个函数,它将使用第三方API将数据写入块中的远程服务器.通过Stack Overflow的一些帮助,我能够实现这一目标,现在它正在按预期工作.问题是我只能得到一个16kb的块来写,因为我需要提前pos写入下一个字节的位置.
初始写入很容易从0开始.由于我对此不熟悉,我不确定下一个pos应该是16还是什么.如果有帮助,API调用writeFileChunk()需要3个参数,即filepath(str),pos(int64)和data(base64编码的字符串).
reader.onload = function(evt)
{
// Get SERVER_ID from URL
var server_id = getUrlParameter('id');
$("#upload_status").text('Uploading File...');
$("#upload_progress").progressbar('value', 0);
var chunkSize = 16<<10;
var buffer = evt.target.result;
var fileSize = buffer.byteLength;
var segments = Math.ceil(fileSize / chunkSize); // How many segments do we need to divide into for upload
var count = 0;
// start the file upload
(function upload()
{
var segSize = Math.min(chunkSize, fileSize - count * chunkSize);
if (segSize > …Run Code Online (Sandbox Code Playgroud) 我希望能够逐字节地打开图像文件并添加十六进制值.我不知道如何做到这一点和google搜索"python字节编辑"和"python字节数组"没有提出任何东西,令人惊讶.有人能指出我需要使用的库,我可以谷歌的特定方法,或教程/指南?
我需要一些HTML5的帮助.我有一个脚本循环遍历所有上传的文件,并获取每个文件的详细信息.目前我正在使用包含FileReader的HTML5技术.FileReader功能仅适用于Chrome和Firefox,所以我正在寻找一种适用于所有其他浏览器的替代方案.
我在FileReader HTML 5 API中看到了Stack Overflow问题Flash替代方案,但是我无法想出如何使用这个Flash的东西,并且没有任何其他解决方案,所以我可以遍历所有上传的文件并获取每个文件详细信息(可在Safari和Internet Explorer中使用)?
例如,假设用户将一些非常大的图像或媒体文件加载到您的Web应用程序中.当他们返回时,您希望您的应用程序显示他们之前加载的内容,但无法将实际文件数据保留在LocalStorage中,因为数据太大.
(对网络编程不熟悉,对任何缺乏基础知识表示歉意.)
我的页面允许用户选择一个文件然后在客户端读取并显示在页面的文本框中.我发现这样做的最简单方法是使用FileReader对象,它在Firefox和Chrome中运行良好.
这在Safari(尚未)中不起作用,那么我该怎么做呢?
//When the eventlistener detects a change in the input file...
var file = evt.target.files[0]
var reader = new FileReader();
reader.onload = function (e){document.getElementById('data').value = e.target.result};
reader.readAsText(file);
Run Code Online (Sandbox Code Playgroud)
相关说明:
我正在阅读从谷歌趋势下载的CSV文件,这里是在记事本中打开时的文件内容(仅前两行):
法拉利法拉利(标准误差)
0.735 2%
当我使用readline读取文件时,行读取包含每个字符之间的空格,在上面的例子中,输出是:
ferrariferrari(stderror)
0.7 3 5 2%
("法拉利"和"法拉利"之间有标签,介于0.735和2%之间,没有显示堆叠溢出)
每行末尾的换行符也会被读取两次.为什么会这样?有解决方案吗
这是我用来读取文件的代码:
BufferedReader Reader = new BufferedReader(new FileReader("trend.csv"));
String line = null;
while ((line = Reader.readLine()) != null)
System.out.println(line);
Run Code Online (Sandbox Code Playgroud)
编辑:在文件的开头还有一些奇怪的字符
Edut:得到了解决方案
这是编码问题,将第一行改为:
BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trend.csv"), "UTF-16"));
Run Code Online (Sandbox Code Playgroud) 我正在使用cordova文件插件 - cordova文件插件
我实际上是从文本文件中读取文件.以下是我的代码
document.addEventListener("deviceready", function () {
window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "sameple.txt", gotFile, fail);
}, true);
function gotFile(file) {
file.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log(this.result);
}
reader.readAsText(file);
}, fail());
}
function fail(e) {
console.info("FileSystem Error : " + e);
}
Run Code Online (Sandbox Code Playgroud)
因此每当我运行此代码时,我都会收到以下错误
deviceready has not fired after 5 seconds.
Channel not fired: onPluginsReady
Channel not fired: onCordovaReady
Could not get Cordova FileSystem: Error: deviceready has not fired after 5 seconds.
"Could not get Cordova …Run Code Online (Sandbox Code Playgroud) 我有一个名为"panamaleaks50k.json"的json文件.我想从json文件中获取['text']字段,但它显示我跟随错误
JSON对象必须是str,bytes或bytearray,而不是'TextIOWrapper'
这是我的代码
with open('C:/Users/bilal butt/Desktop/PanamalEakJson.json','r') as lst:
b = json.loads(lst)
print(b['text'])
Run Code Online (Sandbox Code Playgroud)
我的json文件看起来
[
{
"fullname": "Mohammad Fayyaz",
"id": "885800668862263296",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "Love of NS has been shown in PanamaLeaks scandal verified by JIT...",
"timestamp": "2017-07-14T09:58:31",
"url": "/mohammadfayyaz/status/885800668862263296",
"user": "mohammadfayyaz"
},
{
"fullname": "TeamPakistanPTI \u00ae",
"id": "885800910357749761",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "RT ArsalanISF: #PanamaLeaks is just a start. U won't believe whr...",
"timestamp": "2017-07-14T09:59:29",
"url": "/PtiTeampakistan/status/885800910357749761",
"user": "PtiTeampakistan"
}
]
Run Code Online (Sandbox Code Playgroud)
我如何阅读所有['text']和单个['text']字段?