我正在使用Expo及其ImagePicker从图库中抓取图像。它同时返回uri和base64。
现在我想在multipart/form-data请求中上传图像。
问题是服务器只File在下面的代码发送时才接受[object Object]。
const formData = new FormData();
const data = {
jwt,
};
formData.append('message', JSON.stringify(data));
formData.append('avatar', {
uri: avatar,
type: 'image/png',
name: 'avatar.png'
});
fetch(url, {
method: 'POST',
body: formData,
headers: {
Accept: 'application/json',
},
})
Run Code Online (Sandbox Code Playgroud)
由于我使用的是 Expo,因此我仅限于它支持的库。此外,添加Content-Type标头根本不起作用,服务器甚至无法识别该消息。
有人可以告诉我如何使用AWS JavaScript将画布图像上传到S3服务器吗?
我在使用JavaScript SDK在Amazon S3服务器上上传图像时有点麻烦,需要实现以下功能.
- >在HTML5画布上创建图像并在JavaScript中调整图像大小.
- >然后将图像上传到Amazon S3服务器.
但问题是:
*)在将图像上传到S3服务器时,它将在S3上而不是图像上传图像像素信息.
因此,在S3浏览器预览中,它使用以下代码显示图像流而不是图像.
此外,AWS Javascript支持Body,格式如下Buffer,Typed Array,Blob,String,ReadableStream.
以下是代码:
HTML代码
<canvas id="myCanvas" width="800" height="800" style="background-color: greenyellow;">Your browser doesn't support html5! Please download the latest version.
</canvas>
<input type="button" id="upload-button" value="Upload to S3" />
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.0.4.min.js"></script>
<script type="text/javascript">
AWS.config.update({ accessKeyId: 'ACCESSKEY', secretAccessKey: 'SECRETKEY' });
AWS.config.region = 'ap-southeast-1';
$(function () {
$("#upload-button").click(OnUpload);
});
function OnUpload(){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = 'Images/IMG_0001.JPG';
img.onload = function …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Firefox插件.我需要将一堆数据URI图像保存到磁盘.我该如何处理?
我浏览过MDN上的文件I/O片段,但这些片段对我没什么帮助.
有异步和同步方法.我想使用异步方法,但如何使用异步方法编写二进制文件
Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
// file is nsIFile
var file = FileUtils.getFile("Desk", ["test.png"]);
// You can also optionally pass a flags parameter here. It defaults to
// FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE;
var ostream = FileUtils.openSafeFileOutputStream(file);
//base64 image that needs to be saved
image ="iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
// How can I create an inputstream from the image data URI?
var inputstream = createInputstream(image);
// The last argument (the callback) is optional.
NetUtil.asyncCopy(inputstream , ostream, function(status) {
if (!Components.isSuccessCode(status)) { …Run Code Online (Sandbox Code Playgroud) 我有一个带有一堆文件夹的zip文件,其中包含一个或多个我要渲染到DOM的png文件。
zip.loadAsync(file) .then(function(zip) {
zip.file('textfile.txt')
.async("string")
.then(function (content) { console.log(content); });
}, function (e) {
console.log("Error reading " + file.name + " : " + e.message); });
Run Code Online (Sandbox Code Playgroud)
我可以读取文本文件,但是从图像文件中获取二进制数据时,我会遇到麻烦。
我的想法是,我应该使用URL.createObjectURL(blob)创建对文件的引用,然后<img id="output" src="blob:null/341e9aeb-a794-4033-87f5-e8d075e9868a">为zip中的每个图像进行渲染。
如何从zip中获取图像?
谢谢!
我试图用ngx-image-cropper我的应用程序上传图像,但我无法保存裁剪的图像.例如,如果我尝试保存主文件(通过该文件加载的文件input type="file"),一切正常.在这种情况下,文件发送方式如下:
{name: "300_3.jpg",
lastModified: 1510510128437,
lastModifiedDate: Sun Nov 12 2017 20:08:48 GMT+0200 (GTB Standard Time), webkitRelativePath: "",
size: 81972, …}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试上传图像的裁剪版本,则文件如下所示:
data:image/png;base64,iVBORw0KGgoAAAANSU............
Run Code Online (Sandbox Code Playgroud)
而服务器的响应是这样的:
{error: "Bad Request",
exception:"org.springframework.web.multipart.support.MissingServletRequestPartException",
message: "Required request part 'file' is not present",
path: "/api/myEndPoint/",
status: 400,
timestamp: 1518424822285}
Run Code Online (Sandbox Code Playgroud)
所以基本上我需要像第一种情况一样发送一个abject,但我所拥有的只是一个base64项目.
这里也是HTML代码,如果它有帮助:
<image-cropper
[imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true"
[aspectRatio]="4 / 4"
[resizeToWidth]="250"
format="png"
(imageCropped)="imageCropped($event)"
(imageLoaded)="imageLoaded()"
(loadImageFailed)="loadImageFailed()"
*ngIf="isUploadedFile">
</image-cropper>
Run Code Online (Sandbox Code Playgroud)
有人可以建议我如何上传裁剪版本而不是我上传的初始文件?或者这是需要在服务器上修复的东西,所以它可以接受我发送的文件?谢谢!
我已经查看了本教程,了解如何在HTML5中使用canvas来创建剪贴蒙版. http://www.benbarnett.net/2011/06/02/using-html5-canvas-for-image-masks/
我现在的问题是可以将画布保存为图像(包括蒙版效果)吗?
谢谢
javascript ×4
amazon ×1
angular ×1
blob ×1
file-upload ×1
firefox ×1
html5 ×1
html5-canvas ×1
jszip ×1
react-native ×1
upload ×1