以下代码(供应商规范化)工作得很好,并在Firefox 8中显示"➀➁➂测试",但在谷歌浏览器中显示"“â,â€,测试".有没有办法在使用文件系统API将文件写入临时文件系统时保留Google Chrome中的blob编码?
var bb = new BlobBuilder;
bb.append("??? Test");
var b = bb.getBlob("text/plain;charset=UTF-8");
var url = URL.createObjectURL(b);
open(url);
Run Code Online (Sandbox Code Playgroud) 我在Windows Vista上的Safari 5.1中遇到多个文件上传时遇到了不一致(没有尝试过其他平台).input元素具有multiple允许选择多个文件的标志.当用户确实选择多个文件时,会出现问题.在这种情况下,每个File都具有size属性0.如果(仍然带有multiple标志),用户只选择一个文件,则该size属性正确包含文件大小.
在以下示例中可以看到该问题.测试并查看单个文件选择和多个文件选择的输出.(您需要在测试之间重置). JsFiddle测试
有没有人知道一个解决方法?
如果您使用以下简单的内容在Chrome控制台中打印出File对象:
<input type="file" onchange="console.info(this.files);" />
Run Code Online (Sandbox Code Playgroud)
您将在其他属性中看到一个始终为空的webkitRelativePath属性:
fileName: "07.png"
fileSize: 33022
lastModifiedDate: Date
name: "07.png"
size: 33022
type: "image/png"
webkitRelativePath: ""
__proto__: File
Run Code Online (Sandbox Code Playgroud)
它的目的是什么?它是如何被利用的?
是否可以将HTML 5文件API(例如,此库:https://github.com/23/resumable.js)与S3多部分上载功能结合使用?
http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
在Web浏览器中,我想在本地文件系统中计算大文件的sha1校验和,而不将其发送到服务器.
File API支持从本地磁盘读取文件,但我猜它会读取整个文件并将所有文件放入内存.如果文件大于系统内存,则可能会出现问题.
Streams API似乎对解决这个问题很有用,但我找不到如何使用API读取文件.
有没有办法在Web浏览器中使用javascript从本地磁盘读取文件流?
根据caniuse,在Microsoft Edge build 10547+中支持元素的download属性,但不支持IE或Safari.<a>
如何在不使用<a>带download属性集的元素或服务器的情况下下载文件对象?
我编写了以下代码来检查上传的文件是否存在使用HTML5文件API.
<input type="file" id="myfile">
<button type="button" onclick="addDoc()">Add Document</button>
<p id="DisplayText"></p>Run Code Online (Sandbox Code Playgroud)
以下JavaScript代码已映射到它如下:
function addDoc() {
var file=document.getElementById("myFile").files[0]; //for input type=file
var reader=new FileReader();
reader.onload = function(e) {}
reader.readAsText(file);
var error = reader.error;
var texte=reader.result;
document.getElementById("DisplayText").innerText=reader.result; /*<p id="DisplayText>*/
}
Run Code Online (Sandbox Code Playgroud)
从本地系统浏览文件后,我尝试在单击之前从文件夹中删除"浏览"文档addDoc().单击按钮后我仍然可以看到Filereader.result不是null并且可以显示所有内容.
有人可以解释Filereader的工作原理吗?一旦浏览文件,FileReader就会被绑定吗?
我们也可以检查系统Readonly Attribute with FileReader是否与Java类似File.canread()?
有人可以建议吗?我有IE11来测试代码.
我正在使用spring boot后端,而我的api使用服务通过OutputStreamWriter发送数据.我可以使用像这样的点击事件在Angular 2中下载它:
打字稿
results(){
window.location.href='myapicall';
}
Run Code Online (Sandbox Code Playgroud)
HTML
<button (click)="results()"
class="btn btn-primary">Export</button>
Run Code Online (Sandbox Code Playgroud)
这很好用; 但是,我最近为我的api端点实现了安全性,现在每次尝试拨打电话时都会收到401,因为它没有发送标头.
我写了一个服务,我可以在控制台中看到结果,但我似乎无法弄清楚如何下载文件.
DownloadFileService
import {Injectable} from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/Rx';
@Injectable()
export class DownloadFileService {
headers:Headers;
bearer: string;
constructor(public http: Http) {}
getFile(url:string) {
this.bearer = 'Bearer '+ localStorage.getItem('currentUser');
this.headers = new Headers();
this.headers.append('Authorization', this.bearer);
return this.http.get(url, {headers: this.headers});
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试通过blob下载数据,如本文所述: 如何使用Angular2下载文件
下载的文件类型为File,内容为:
响应状态:200确定URL:我的网址
它实际上并没有下载数据.
downloadFile(data: any){
var blob = new Blob([data], { type: 'text/csv' });
var url= window.URL.createObjectURL(blob);
window.open(url); …Run Code Online (Sandbox Code Playgroud) 我有一个需要将大文件上传到Azure BLOB存储的Web应用程序.我的解决方案使用HTML5 File API切片成块,然后将块作为blob块放置,块的ID存储在数组中,然后块作为blob提交.
该解决方案在IE中运行良好.在64位Chrome上,我已经成功上传了4Gb文件但是看到了非常大的内存使用量(2Gb +).在32位Chrome上,特定的镀铬工艺将达到约500-550Mb然后崩溃.
我看不到任何明显的内存泄漏或我可以改变以帮助垃圾收集的事情.我将块ID存储在一个数组中,所以显然会有一些内存蠕变,但这不应该很大.这几乎就像File API将整个文件保存在内存中一样.
它是作为一个从控制器调用的Angular服务编写的,我认为只是服务代码是相关的:
(function() {
'use strict';
angular
.module('app.core')
.factory('blobUploadService',
[
'$http', 'stringUtilities',
blobUploadService
]);
function blobUploadService($http, stringUtilities) {
var defaultBlockSize = 1024 * 1024; // Default to 1024KB
var stopWatch = {};
var state = {};
var initializeState = function(config) {
var blockSize = defaultBlockSize;
if (config.blockSize) blockSize = config.blockSize;
var maxBlockSize = blockSize;
var numberOfBlocks = 1;
var file = config.file;
var fileSize = file.size;
if (fileSize < blockSize) {
maxBlockSize = …Run Code Online (Sandbox Code Playgroud) 使用cordova文件插件下载文件时使用window.resolveLocalFileSystemURLvs有什么区别window.requestFileSystem?我找不到关于resolveLocalFileSystemURL的任何文档,但它工作正常,它更容易使用?
我应该在cordova应用程序中使用哪一个简单的CRUD操作?
(我用cordova 3.4.0-0.1.3)
我这样使用它:
function onResolveSuccess(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
var _machines = JSON.parse(evt.target.result);
machinesCache.setMachines(_machines.AllMainCategories);
};
reader.readAsText(file);
}, errorHandler);
};
window.resolveLocalFileSystemURL("cdvfile://localhost/persistent/machinedata/machines.json", onResolveSuccess, errorHandler);
Run Code Online (Sandbox Code Playgroud)