- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究 FineUploader 的实现。特殊要求是在客户端动态创建缩略图,然后使用原始图像上传上传这些缩略图。
我有一个适用于 FF 的实现,但似乎不适用于 iO。看起来像这样:
var uploader = new qq.FineUploaderBasic({
button: document.getElementById(buttonID),
request: {
endpoint: '/up/load/a/' + $('section#ajax-viewport').data('albumid')
},
callbacks: {
onSubmit: function(id, fileName) {
// getFile obtains the file being uploaded
file = this.getFile(id);
// create a thumbnail & upload it:
ThumbDown(file, id, 200, fileName);
},
}
})
这段代码调用了一个函数:
function ThumbDown(file, id, dimension, fileName) {
var reader = new FileReader();
reader.onload = function(e) {
var img = document.createElement("img");
img.onload = function (ev) {
var thumbnailDimensions; // object holding width & height of thumbnail
var c=document.getElementById("canvas-for-thumbnails"); // must be a <canvas> element
var ctx=c.getContext("2d");
// set thumbnail dimensions of canvas:
thumbnailDimensions = calcThumbnailDimension (img.width, img.height, dimension )
c.width = thumbnailDimensions.width;
c.height = thumbnailDimensions.height;
var ctx = c.getContext("2d");
ctx.drawImage(img, 0, 0, c.width, c.height);
uploadThumbnail(c.toDataURL('image/jpeg'), //a base64 encoded representation of the image
id,
fileName); // we need filename to combine with mother-image on the server
};
img.src = e.target.result;
}
reader.readAsDataURL(file);
} // end function
最后,缩略图通过愚蠢的 ajax 调用上传:
function uploadThumbnail (base64encodedString, id, fileName) {
$.post('/up/thumb',
{
img : base64encodedString,
id: id,
fileName: fileName
},
function(data) {});
}
我的问题:
1) 目前我有两个上传:一个用于母图,另一个用于缩略图。我想将其合并到一个 FineUploader 调用中。但是,由于缩略图创建的异步性质,我看不到执行此操作的方法。
我错过了什么吗?是否可以将其减少为一次 FineUploader 调用?
2) 此代码将缩略图上传为 base64 编码字符串。我想将缩略图上传为图像(或 blob
?)。也许通过关注 this recipe杰里米类克斯。这可以与 FineUploader 一起使用吗?
3) FineUploader 是否有其他我错过但应该使用的选项/方法?
如有任何帮助,一如既往,我们将不胜感激。
最佳答案
所以,上传原图已经是小菜一碟了。 Fine Uploader 会为您解决这个问题。如果我理解正确,您还想上传图像的缩放版本(您已经生成)。我建议你把画在 Canvas 上的图像转换成 Blob
.然后,你可以提交这个 Blob
直接到 Fine Uploader,它将为您上传。
例如,更改uploadThumbnail
的值对此:
function uploadThumbnail(thumbnailDataUri, id, filename) {
var imageBlob = getImageBlob(thumbnailDataUri, "image/jpeg"),
blobData = {
name: filename,
blob: imageBlob
};
// This will instruct Fine Uploader to upload the scaled image
uploader.addBlobs(blobData);
}
function getImageBlob(dataUri, type) {
var binary = atob(dataUri.split(',')[1]),
array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: type});
}
注:getImageBlob
函数改编自 this Stack Overflow answer .如果这对您有用,请务必为我链接到的答案投票。
A Blob
几乎是一个 File
没有 name
属性(property)。您的服务器端代码将处理 Blob
的上传与 File
几乎相同或包含 <input type="file">
的表单提交表单字段。与您的服务器唯一明显的区别是包含文件的多部分边界的 Content-Disposition header 中的文件名参数值。换句话说,由于大多数浏览器生成包含 Blob
的多部分编码请求的方式,您的服务器可能认为该图像被命名为“blob”或其他通用名称。对象。 Fine Uploader 应该能够通过明确指定浏览器的文件名以包含在 blob 的 Content-Disposition header 中来解决这个问题,但这种能力没有得到广泛的浏览器支持。 Fine Uploader 在某种程度上通过在包含 Blob
的实际名称的请求中包含“qqfilename”参数来绕过此限制。 .
计划为 Fine Uploader 添加对缩略图预览的原生支持。这包含在功能请求中 #868和 #896 .还有其他相关的功能请求打开,例如 image rotation和 validation related to images .这些功能和其他与图像相关的功能可能会在不久的将来添加到 Fine Uploader 中。如果您愿意,请务必对现有功能请求发表评论或添加其他请求。
关于javascript - 精细 uploader : Thumbnails on the fly clientside,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429012/
我在项目中使用ngx-uploader实现文件上传。 但是当我上传多个文件时,它将文件数组分成多个请求。 我尝试使用 ng2-file-upload 但结果相同。 最佳答案 请参阅 GitHub 上的
我想要一个类似 this 的上传者但我想要一个进度条,并在完成后通过电子邮件向我发送通知,就像 yousendit 那样。 任何开源的东西都会很酷。 最佳答案 Uploadify允许有进度条。至于电子
我正在尝试编写一个Python脚本,可以将图片和pdf上传到WordPress。我希望图像上传到文件夹‘/wp-Content/Uploads/’,将pdf文件上传到文件夹‘/wp-Content/U
开发自定义 portlet 以在 Liferay 6.2 中上传多个文件。 在以下位置的文档库 Portlet 中浏览 Liferay 源代码时找到 Liferay.Upload 组件: https:
我正在尝试使用 HTML5 制作一个带有进度表的文件 uploader 。这是我的代码: Test Progress Meter function submit
当我选择一些图像并放入 WordPress 文件 uploader 时,该组的第一张图像此时似乎已正确上传,而其他图像则卡住且未得到处理。 但是,经过一段时间的等待,我停止了该进程,重新加载了浏览器选
我今天刚刚从 Cordova (PhoneGap) 1.5 升级到 1.9,突然我的 FileTransfer 参数停止发布。我可以说出来,因为我让服务器端调试了 $_POST 参数,它们现在是空白的
我已经在运行 RHEL7 的服务器上安装了 Mediawiki v1.24.1。 我已经将它安装在/var/www/foohelp/wiki 下。但是,当我尝试上传文件时,出现以下错误: [f3eae
在 Symfony2 中上传图片时,有没有办法调整图片大小? ImagineAvalancheBundle只允许在检索图像时将图像大小调整为缩略图,这对我来说并不是真正的性能。 此外,在发布数据时检索
我在网站上使用blueimp-file-upload,并且在使用webpack来组织我的js代码。 我从NPM安装了blueimp-file-upload和jquery.ui.widget npm i
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我需要获取上传的文件以将其推送到文件列表,但我无法做到这一点...我希望有人可以帮助我: UIkit.upload('.test-upload', { url: `/api/gridfs/${d
我基本上是一名 Java 开发人员,仅了解有关 Android 开发的基本信息。我开发了一个 Web 端点,它接受文件和一些其他参数。 java代码是 @RequestMapping(path = "
我正在使用 symfony.com 的食谱文章来实现图像的文件上传选项。 现在我想将其他图像加载到实体中。 默认的编辑策略是: 1.从数据库中取出 2. 注入(inject)表单 3.坚持 不知何故,
我需要处理通过(有和没有分块)上传到 Amazon S3 的每个文件的二进制数据。你知道 Fineuploader 中是否有我可以用来处理每个二进制 block /文件的函数/信号吗?: 例如: pr
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我读到 HTML5 规范引入了在上传表单中选择多个文件的功能。目前有哪些浏览器支持这个? Adobe AIR 是否支持它? 额外的问题:是否有利用此功能的 JavaScript 库? 最佳答案 即将发
我正在评估 Fine Uploader与其他各种选项相比,特别是 JQuery File Upload . 与依赖 Bootstrap 和 JQuery UI 的 JQuery File Upload
我正在尝试通过 Swift 2/Alamofire 将文件和参数上传到 Google 云端硬盘。在下面的代码中,我更改了以下行: "https://www.googleapis.com/upload/
我正在使用 Kendo UI Upload Control 并希望在同步模式下允许多个文件,但是当同时添加多个文件时,它们被组合在同一行项目中。有没有办法在组选择时将每个单独的文件作为自己的行项目?在
我是一名优秀的程序员,十分优秀!