前段时间做个小东西要从手机端上传图片到服务器,再从服务器端解析显示出来,刚开始用的是老方法,将图片压缩为base64采用post方式上传,后来发现解析的稍后总是解析不完,毋庸置疑的是,这种经典的方法肯定是没有问题的,只是自己的思路出现了差错,后来在一位学长的介绍下,使用了骑牛云平台,这个平台就图片上传而言可以实现的功能是,从手机端上传图片到云端返回来图片的网址,在存储的时候我们直接存储图片的网址,解析时解析网址即可显示出图片。
根据官网文档,简单的写了一个算法。
代码如下:
import java.io.File; import com.alibaba.*; import com.alibaba.media.*; import com.alibaba.media.client.MediaClient; import com.alibaba.media.client.impl.DefaultMediaClient; import com.alibaba.media.upload.UploadPolicy; import com.alibaba.media.upload.UploadTokenClient; import com.alibaba.media.upload.impl.DefaultUploadTokenClient; class WantuUpload{ public String AK,SK,namespace; WantuUpload(String AK,String SK,String namespace) { this.AK=AK; this.SK=SK; this.namespace=namespace; } MediaConfiguration configuration = new MediaConfiguration(); UploadTokenClient tokenClient = new DefaultUploadTokenClient(configuration); public String getUploadToken(){ // 1. 定义全局配置信息 configuration.setAk(AK); configuration.setSk(SK); configuration.setNamespace(namespace); // 3. 定义上传策略 UploadPolicy uploadPolicy = new UploadPolicy(); uploadPolicy.setInsertOnly(UploadPolicy.INSERT_ONLY_NONE); uploadPolicy.setExpiration(System.currentTimeMillis() + 3600 * 1000); String token = tokenClient.getUploadToken(uploadPolicy); return token; } public Result<MediaFile> uploadFile(String localFile,String remoteDir,String remoteFileName) { MediaClient client = new DefaultMediaClient(configuration); File file = new File(localFile); Result<MediaFile> result = client.upload(remoteDir,remoteFileName, file); return result; } } public class aliUpload { public static void main(String args[]) { WantuUpload clouddisk=new WantuUpload("ak","sk","文件夹名"); String token=clouddisk.getUploadToken(); //System.out.println(token); System.out.println(clouddisk.uploadFile("c:\\hgh.gif", "GIF", "123456+时间种子.gif")); System.out.println("http://clouddisk.file.alimmdn.com/"+"GIF/"+"debug.gif"); } }
选中图片后获取file路径,上传至七牛云平台,返回输出的即是图片路径。
本人为小白初学者,希望与大家多多交流,共同进步。