知道怎么手机版本百度百科无法上传图片片

我的手机为什么不能上传图片_百度知道
我的手机为什么不能上传图片
我有更好的答案
能不能说具体一点
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
需求:1 移动端项目2 可上传多张图片,图片前端压缩后再上传(怕直接上传图片太大影响上传速度)
问题:ios手机上传竖图会显示成横图(处理办法:读取图片,判断exif的方向值,根据方向值前端用canvas旋转图片)
问题:读取图片时,电脑可以onload,可是手机onload不起作用,猜想是因为图片太大?
求助,感谢!
choose.addEventListener('change', function () {
if (!this.files.length)
var files = Array.prototype.slice.call(this.files);
if (files.length & 9) {
alert("最多同时只可上传9张图片");
files.forEach(function (file, i) {
if (!/\/(?:jpeg|png|gif)/i.test(file.type))
var reader = new FileReader();
var li = document.createElement("li");
//获取图片大小
var size = file.size / 1024 & 1024 ? (~~(10 * file.size / 1024 / 1024)) / 10 + "MB" : ~~(file.size / 1024) +
li.innerHTML =
'&span onclick="delImg(this.parentNode)" class="del"&删除&/span&&span class="succ"&上传成功&/span&&span class="progress"&&i&&/i&&/span&';
postimg.appendChild(li);
reader.onload = function () {
var result = this.
var img = new Image();
alert(111)//这里可以执行
img.onload = function () {
alert(222)//这里电脑可以执行,手机执行不了
EXIF.getData(this, function () {
EXIF.getAllTags(this);
Orientation = EXIF.getTag(this, 'Orientation');
console.log('dir:' + Orientation)
switch (Orientation) {
//需要顺时针(向左)90度旋转
rotateshow = rotateImg(this, 'left');
//需要逆时针(向右)90度旋转
rotateshow = rotateImg(this, 'right');
//需要180度旋转
rotateImg(this, 'right'); //转两次
rotateshow = rotateImg(this, 'right');
rotateshow =
li.style.backgroundImage = "url(" + rotateshow + ")";
//li.style.backgroundImage = "url(" + result + ")";
li.setAttribute('type', file.type)
if (compresssign) {
//如果图片大小小于500kb,则直接上传
if (result.length &= maxsize) {
//upload(result, file.type, $(li));
//图片加载完毕之后进行压缩,然后上传
if (img.complete) {
callback();
img.onload =
function callback() {
var data = compress(img);
//upload(data, file.type, $(li));
reader.readAsDataURL(file);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最后用的办法是,把图片写入页面,用CSS让用户看不到这个图片,在js里图片onload就可以了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
今天看到《jQuery基础》的高级Ajax里有段代码,似乎跟你前几天在网易前端群里发的提问有关系,我就查了下,你看看是否有用。对于部分浏览器是会将图片缓存的(见《Learning jQuery 4th edition》275页)。考虑到你的调试的时候不会每次都清除缓存,所以有可能是因为这个原因,img元素的load事件在第一次加载后就触发不了。
这是,跳到第二个回答看下,以及其中提到的。
当判断img资源是否加载完成时,不能完全依赖load和error事件,因为有些浏览器存在图片缓存的问题,所以可通过判断img标签对应的DOM对象的complete和naturalWidth或width属性来确定。相关的三个HTMLImageElement类型实例的属性可以参考,如果不能翻墙的话看,MDN因为缺少相关页面就不ref了。naturalWidth因为是IE9+才支持,所以兼容的话还要考虑width属性(未明确设置CSS样式或者HTML特性),图片未成功加载时两个属性的返回值都是0(其实width不是,看后面)。
可以只用complete,判断加载完成
if(img.complete) {
// 图片已缓存时的处理代码
} else { // 图片未缓存时的处理代码
img.onload =
如果还要判断加载成功/失败的情况,要多检测naturalWidth或width
var propWidth = typeof img.naturalWidth ? 'width' : 'naturalWidth';
if(img.complete){ //已缓存
if(!!img[propWidth]){
//加载成功
//加载错误
} else { //未缓存
img.onload = callback1;
img.onerror = callback2;
注意: 这里的width属性是个坑,并不可信,我通过建立简易服务器用IE8和chrome canary测试,如果图片加载完成,但是失败了,width返回的分别是是28和20。不过,你的代码是在苹果的机器上跑,应该不存在不支持naturalWidth的情况。
if(img.complete){ //因为`img`加载是异步的,这段代码是同步跑的, 加载完成就说明已缓存
if(img.naturalWidth){
// 加载成功
// 加载失败
} else { // 加载未完成所以未缓存
img.onload = successCB;
img.onerror = errorCB;
希望还有帮助。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。怎么用手机上传图片到淘宝店铺_百度知道
怎么用手机上传图片到淘宝店铺
怎么用手机上传图片到淘宝店铺
我有更好的答案
然后点击图片上“适配手机”出现提示,看到左侧栏“图片空间”进入图片空间后,点击上传图片,也可以拉动鼠标全选,这步可以跳过)图片上传成功将上图左上角的勾选,全选所有图片,将宝贝详情页的所有图片上传(如果你的图片空间已经有图片首先进入淘宝卖家中心,拖到详情页编辑区,点击手机端,然后点“添加”---&“图片”,点击“确定”,即可生成适配手机的图片生成图片就进到相应的宝贝编辑页
采纳率:93%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
淘宝 店铺 手机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。页面样式:
上传图片有原生的方法&input type="file" accept="image/*"&,如果只想要拍照上传,不希望用户选择图片上传,可以通过添加capture属性,该属性值有camcorder/microphone/camera...,此处选择camera。PS:该属性存在浏览器兼容性问题,不是所有的浏览器都支持。
type="file" accept="image/*" capture="camera" &
因为原生file样式不满足要求,需要进行相应的处理,此时使用定位,在input上面放置我们想要的页面效果。然后当点击上面的元素,就可以触发我们的input进行图片上传。此时的问题是:当点击input上面的元素,需要事件穿透,即相当于点击input。则借助于css3新属性pointer-events。
pointer-events:
----此时图片上传的样式已经处理好了----
代码片段:
padding: 0;
margin: 0;
width: 320
height: 50
margin: 20
border: 1px solid
width: 100
height: 30
pointer-events:
width: 100
height: 30
pointer-events:
border: 1px solid
padding: 10
div class = "wrapper"&
input type = "file" accept= "image/*" capture= "camera" id= "img" /&
button &上传照片 button &
图片压缩处理:
因为要做的是手机拍照上传,现在的手机拍照片都很大,比如小米4S,大小在3M以上,如果原图上传,太消耗用户流量,于是要解决图片压缩的问题。
通过change事件,监听图片上传,通过readerAsDataURL获取上传的图片。
document.getElementById( 'img').addEventListener( 'change', function () {
var reader = new FileReader();
reader.onload = function (e) {
reader.readAsDataURL(this.files[0]);
console.log(this.files[0]);
var fileSize = Math.round( this.files[0].size/1024/1024) ;
}, false);
对上传的图片进行压缩,需要借助于canvas API,调用其中的canvas.toDataURL(type, encoderOptions); 将图片按照一定的压缩比进行压缩,得到base64编码。重点来了:压缩策略:先设置图片的最大宽度 or 最大高度,一般设置其中一个就可以了,因为所有的手机宽高比差别不是很大。然后设置图片的最大size,allowMaxSize,根据图片的实际大小和最大允许大小,设置相应的压缩比率。
1、设置压缩后的最大宽度 or 高度;
2、设置压缩比例,根据图片的不同size大小,设置不同的压缩比。
function compress(res,fileSize) {
var img = new Image(),
maxW = 640;
img.onload = function () {
var cvs = document.createElement( 'canvas'),
ctx = cvs.getContext( '2d');
if(img.width & maxW) {
img.height *= maxW / img.
img.width = maxW;
cvs.width = img.
cvs.height = img.
ctx.clearRect(0, 0, cvs.width, cvs.height);
ctx.drawImage(img, 0, 0, img.width, img.height);
var compressRate = getCompressRate(1,fileSize);
var dataUrl = cvs.toDataURL( 'image/jpeg', compressRate);
document.body.appendChild(cvs);
console.log(dataUrl);
function getCompressRate(allowMaxSize,fileSize){
var compressRate = 1;
if(fileSize/allowMaxSize & 4){
compressRate = 0.5;
} else if(fileSize/allowMaxSize &3){
compressRate = 0.6;
} else if(fileSize/allowMaxSize &2){
compressRate = 0.7;
} else if(fileSize & allowMaxSize){
compressRate = 0.8;
compressRate = 0.9;
return compressR
图片上传给服务器:
图片已经压缩完成了,但是压缩后的图片不是File,而是一个base64编码,于是乎两个选择:1、以String的形式将base64编码上传给服务器,服务器转存base64为img图片;2、前端将base64转为File图片类型,上传给服务器。方法一:压缩之后直接上传base64给后台,实现简单。方法二:前端自己转存base64位File图片,这个对于前端 压力比较大。
原因:html5 canvas属于客户端API,没有权限去保存图片到硬盘,只有canvas.toDataURL()这一接口可导出画布的base64编码,以提供给服务器进行处理保存。所以如果要将base64编码转成图片需要借助于nodeJs。因为nodeJS有相关文件处理的API。
var express = require('express');
var fs = require("fs");
var app = module.exports = express();
function dataToImage(dataUrl){
var base64Data = dataUrl.replace(/^data:image\/\w+;base64,/,'');
var dataBuffer = new Buffer(base64Data,'base64');
fs.writeFile('out.jpg',dataBuffer,function(err){
console.log(err);
console.log('Success...');
dataToImage('data:image/base64,/9...');
if(!module.parent){
app.listen(8000);
console.log('Express started on port 8000');
Summary:如果使用nodeJS,需要单独部署nodeJS代码到服务器,整个逻辑会比较麻烦。综合比较两种方法,推荐使用第一种方法,直接传base64给服务器,后台处理相应的转化!手机上传|照片到电脑上,在电脑上怎样查看_百度知道
手机上传|照片到电脑上,在电脑上怎样查看
我有更好的答案
1.双击点开我的电脑2.点开磁盘(你存时候选的那个磁盘)3双击图片就行了.
在,我的设备,里面查看,亲!
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 无法上传图片 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信