我正在使用html表单和ajax直接上传到S3.它运行良好,文件上传.我的问题是进度事件来得太快了.像所有这些一样,在上传开始时立即触发高达99.9%.
var fd = new FormData();
// put data from the form to FormData object
$.each( $('#upload-form').serializeArray(), function(i, field) {
fd.append(field.name, field.value);
});
// add selected filename to the form data
var file = document.getElementById('path-to-file').files[0];
fd.append("file", file);
var xhr = getXmlHttpRequest(); // cross-browser implementation
xhr.upload.addEventListener("progress", function(e) {
console.log(e.loaded + "/" + e.total);
});
xhr.open('POST', 'http://mybucket.s3.amazonaws.com/', true);
xhr.send(fd);
Run Code Online (Sandbox Code Playgroud)
也尝试过这种方式
xhr.upload.onprogress = function(evt)
{
if (evt.lengthComputable)
{
console.log(e.loaded + "/" + e.total);
}
};
Run Code Online (Sandbox Code Playgroud)
浏览器日志如下所示:
[22:54:47.245] POST http://mybucket.s3.amazonaws.com/
[22:54:47.287] 359865/5680475
[22:54:47.330] 1408441/5680475 …Run Code Online (Sandbox Code Playgroud) 我需要从 Java 调用外部程序,例如 ImageMagick 的convert. 除非我把它放在cmd /c实际命令之前,否则它无法在 Windows 上工作。
String source = "test.jpg";
String result = "test-thumbnail.jpg";
ProcessBuilder builder = new ProcessBuilder().command("cmd", "/c", "convert", source, "-thumbnail", "295x", result);
Process process = builder.start();
Run Code Online (Sandbox Code Playgroud)
如何避免使用cmd /c以便我的代码在 Windows 以外的操作系统上运行?
没有cmd /c我遇到与此处描述的非常相似的问题:从 python 运行 imagemagick convert (console application) - 存在一个convert.exe被调用的本机 Windows而不是 ImageMagick 的convert.exe. 似乎PATH不是由子进程的环境选择的。
我已经仔细检查了我的系统PATH之前是否有 ImageMagick 目录C:\Windows\system32。当我在 Windows 命令行中键入命令时,命令本身也运行得非常好。