我们有一个图像上传应用程序,我们在上传之前使用外部JavaScript库在客户端压缩图像。
现在,在上传扩展名为.heif或的图像文件时,我们遇到了iOS11特有的问题.heic。
作为示例,当我们提交带有abc.heic图像的表单时,尝试通过上述库进行压缩时,客户端浏览器应用程序崩溃。因此,我们希望限制将.heic图像附加到图像输入。
不幸的是,我们无法.heic在服务器端识别(我认为是)图像,因为我们abc.jpg在后端收到文件名,因为iOS11 在上传之前会自动将.heic图像转换为jpg图像。
因此,我想在客户端进行检测,但是当我使用下面的代码在客户端检查文件MIME类型时,它会返回image/jpg(实际上我没有iPhone,所以其他一些朋友为我做了)。因此,在我检查MIME类型之前,.heic图像似乎jpg已由iOS11内部转换为图像。(但是由于某些原因,这些转换后的jpg文件无法由该库压缩)
$(document).on('change', '[id=uploading_file]', (evt) => {
'use strict'
const files = [...evt.target.files];
var uploadingFile = files[0];
var fileType = uploadingFile["type"]; // get file MIME type
var ValidImageTypes = ["image/jpg", "image/jpeg", "image/png", "image/gif", "image/bmp"];
if (jQuery.inArray(fileType, ValidImageTypes) >= 0) {
// image compression code goes here.
}
});
Run Code Online (Sandbox Code Playgroud)
一些替代解决方案:
我也做了一些其他的修正,以免附加 …
我想知道为什么我仍然无法想办法做到这一点.虽然看起来很简单,但我花了整整一天的时间.但不能这样做.
我有一组骰子图像.1.png,2.png,....和6.png.我的布局中有一个ImageView.那是,
ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne);
Run Code Online (Sandbox Code Playgroud)
在这里,我想快速更改此imageView以查看使用上述6个图像的某种视觉/动画.为此我写下了一段代码.
代码1:
for (int j=0;j<10;j++){
int randomNum = random.nextInt(6);
System.out.println("Random Value " + randomNum);
dice.setImageResource(images[randomNum]);
}
Run Code Online (Sandbox Code Playgroud)
输出:
没有视觉效果.imageView保持不变,并在循环最后一次迭代时突然改变.我认为这是因为循环执行速度非常快.然后我做了以下.
代码2:
for (int j=0;j<10;j++){
int randomNum = random.nextInt(6);
System.out.println("Random Value " + randomNum);
dice.setImageResource(images[randomNum]);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
再一次没有视觉效果.imageView保持不变,并在循环最后一次迭代时突然改变.然后我做了以下.
代码3:
final Handler localHandler = new Handler();
Runnable runnableObject = new Runnable() {
public void run() {
final ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne); …Run Code Online (Sandbox Code Playgroud) 我在这个问题上有同样的问题.如果我再解释一下,我可以使用rsync将我的本地数据与服务器同步而无需密码(我使用SSH密钥).但是当我在PHP中使用exec()函数时,它不起作用.
问过上述问题的人自己给出了答案.他说,可以通过允许Apache用户帐户无密码访问服务来完成.所以我的问题是我如何提供Apache用户帐户无密码访问服务器?
我的PHP代码是:
echo exec('rsync -aze --progress --size-only /var/tmp/src/File01 serveruser@mycloud.com.lk:/var/tmp/dest/File01');
Run Code Online (Sandbox Code Playgroud)
PS:我使用我的典型用户帐户登录我的机器(假设用户名是' bob '),并使用生成的ssh密钥ssh-keygen -t rsa.然后bob有无密码访问服务器.
但是,当我运行PHP命令时,它在Apache下运行mod_php并且通常Apache作为自己的用户帐户运行,独立于使用服务器的真实世界的人.因此我生成的密钥不适用于Apache内部的PHP.
因此我尝试以Apache用户身份登录(我认为它是www-data).但大多数文章都说www-data默认没有密码,不能以www-data身份登录.
谢谢.