阿里云文件上传(图片上传)

页面写法:
 
         

<div class="col-md-12">
    <label class="control-label col-md-2 col-md-offset-3">选择图片</label><br>
<div class="fileinput fileinput-new  col-md-offset-3" 
    <div id="imageContent" class="thumbnail"
        <img id="imgShow" src="${cardPrivilege.fileUrl}" alt="图片">
    </div>
    <div id="headUpload">
        <input id="imageIdStr" name="imageIdStr" type="hidden"
            </span>
    </div>
</div>
</div>
js 写法:
 
         

uploadAvatar = function(){
    if($.trim($("#headPic").val())==""){
        $("#avatarFileId").val("");
        return;
    }
    $("#deletePic").hide();
    $("#selectPic").hide();
    $("#modifyPic").hide();
    $("#loadingImg").show();
    $.ajaxFileUpload({
        url: '/oss/uploadCmsAvatar.do',
        fileElementId: 'headPic',
        dataType: 'json',
        success: function (callbackData) {
            if(callbackData.retcode==0&&callbackData.errcode==0){
                $("#imageIdStr").val(callbackData.data.fileUrl);
                $("#fileId").val(callbackData.data.fileId);
                alert(callbackData.data.fileUrl);
                $("#imgShow").attr("src",callbackData.data.fileUrl);
                $("#exisImage").show();
                $("#nonImage").hide();
                $("#deletePic").show();
                $("#selectPic").hide();
                $("#modifyPic").show();
            }
            else {
                alert(callbackData.message);
            }
            $("#loadingImg").hide();
        },
        error:function (callbackData){
            $("#loadingImg").hide();
            alert("上传照片异常");
        }
    });
};
cms 的control写法:
 
         

@Controller
@RequestMapping("/oss")
@Scope("prototype")
public class OssImageController extends BaseController {
 
         
    @Autowired
    OssImageService ossImageService;
    /**
     * 上传后台用户头像
     * @param request
     * @param cmsRole
     * @return
     */
    @RequestMapping(value="/uploadCmsAvatar",method = RequestMethod.POST) 
    @ResponseBody
    public ResultObject uploadCmsAvatar(HttpServletRequest request,@RequestParam(value = "headPic", required = false)MultipartFile file){
        
        ResultObject resultObject = new ResultObject();
        try {
            resultObject = ossImageService.UploadCmsAvatar(file);
        } catch (Exception e) {
            resultObject.setRetcode(9999);
            resultObject.setErrcode(9999);
            resultObject.setMessage("上传图片失败.");
            LogWriter.writeErrorLog("上传图片失败", e);
        }
 
         
        return resultObject;
    }
}
cms的service写法:
 
         

/**
     * cms头像上传
     * @return
     * @throws Exception 
     */
    public ResultObject UploadCmsAvatar(MultipartFile file) throws Exception{
        return resultObject = UploadImage(file,OssImageEnum.CMS_AVATAR);
    }
 
          

/**
     * 通用图片上传
     * @return
     */
    public ResultObject UploadImage(MultipartFile file,OssImageEnum ossImageEnum) throws Exception{

        String loginName = LoginCookieHandle.getLoginUser().getUserName();
        String fileBase64 = new BASE64Encoder().encode(file.getBytes());
        String fileName = file.getOriginalFilename();
        //业务参数
        apiDataParamJson.put("loginName", loginName);
        apiDataParamJson.put("fileName", fileName);
        apiDataParamJson.put("key", ossImageEnum);
       
        //请求参数
        apiParamMap.put("partner", partner);
        apiParamMap.put("data", URLEncoder.encode(apiDataParamJson.toJSONString(), "utf-8"));
        apiParamMap.put("sign", createSign(apiDataParamJson.toJSONString()));
        
        //请求api
        apiResultString = HttpRequestUtil.postFile(“http://localhost:8080/api/oss/uploadImage.do
      
        //验证api返回结果
        if(ValidateUtil.stringNullOrEmpty(apiResultString)==true){
            resultObject.setRetcode(1);
            resultObject.setErrcode(1);
            resultObject.setMessage("未得到服务中心应答");
            return resultObject;
        }
        
        //反向解析服务器内容
        OssImageResult ossImageResult = JSONObject.parseObject(apiResultString,OssImageResult.class);
     
        //api返回结果验证
        if(ossImageResult.getRetcode()!=0||ossImageResult.getErrcode()!=0){
            resultObject.setRetcode(ossImageResult.getRetcode());
            resultObject.setErrcode(ossImageResult.getErrcode());
            resultObject.setMessage(ossImageResult.getMessage());
            return resultObject;
        }
        resultObject.setRetcode(0);
        resultObject.setErrcode(0);
        resultObject.setMessage("图片上传成功");
        resultObject.setData(ossImageResult.getData());
        
        return resultObject;
        
    }
api的controller:
 
         

@Controller
@RequestMapping("/api/oss")
@Scope("prototype")
public class ImageController extends BaseAPIController {
 
         
    @Autowired
    ImageService imageService;

    @RequestMapping(value = "/uploadImage")
    @ResponseBody
    public ResultObject uploadImage(InputObject inputObject, String fileBase64) {
        try {
            execute(inputObject);
            if (resultObject.getErrcode() != ApiResponseConstant.API_RESQUEST_SUCCESS) {
                return resultObject;
            }
            resultObject = imageService.upload(inputObject, fileBase64);
        } catch (Exception e) {
            LogWriter.writeErrorLog("上传图片失败,原因:", e);
            resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_FAIL);
            resultObject.setErrcode(ApiResponseConstant.API_UNKNOWN);
            resultObject.setMessage(CmsConstant.MENU_FAILED);
        }
        return resultObject;
    }
}
api的service:
 
         

/**
     * 图片上传
     * @param 图片内容file
     * @param 存储文件夹key
     * @param 返回结果resultObject
     * @return
     * @throws Exception 
     */
    @SuppressWarnings("restriction")
    public ResultObject upload(InputObject inputObject,String fileBase64) throws Exception{
        
        try {
            String dataStr = inputObject.getData();
            //参数不能为空
            if (CommonUtil.validateStringIsNullOrEmpty(dataStr, true)) {
                resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_SUCCESS);
                resultObject.setErrcode(ApiResponseConstant.API_PARAM_NOT_NULL);
                resultObject.setMessage(ApiResponseConstant.MESSAGE_API_PARAM_NOT_NULL);
                return resultObject;
            }
            //获取传输参数
            JSONObject json = JSONObject.parseObject(inputObject.getData());
            String sourceFileName = json.getString("fileName");
            String key = AliYunConfig.getImageKey(json.getObject("key", OssImageEnum.class));
            
            byte[] bFile = new BASE64Decoder().decodeBuffer(fileBase64);
            
            resultObject = upload(bFile,sourceFileName,key);
            
        } catch (Exception e) {
            LogWriter.writeErrorLog(String.format("上传失败,原因:%s", e.getMessage()));
            //上传图片失败
            resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_FAIL);
            resultObject.setErrcode(ApiResponseConstant.API_UNKNOWN);
            resultObject.setMessage(SecurityConstant.UPLOAD_FAIL);
        } 
        return resultObject;
    }
 
          

/**
     * 图片上传
     * @param 图片内容file
     * @param 存储文件夹key
     * @param 返回结果resultObject
     * @return
     */
    public ResultObject upload(byte[] bFile, String sourceFileName, String key){
        InputStream inputStream = new ByteArrayInputStream(bFile);
        try {
            
            //得到图片序列        
            String  extendName = FileUtil.getExtendName(sourceFileName);//文件扩展名
            String  extendNameNoDot = FileUtil.getExtendNameNoDot(sourceFileName);  //得到文件ID
            //向数据库中保存图片相关信息
            Long fileId=saveFileContent(extendNameNoDot, key, sourceFileName); 
            //以上上传成功后保存到文件内容表
            if(fileId.longValue() <=0){
                //保存图片文件到表中失败
                resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_SUCCESS);
                resultObject.setErrcode(SecurityConstant.SAVE_FAIL_CODE);
                resultObject.setMessage(SecurityConstant.SAVE_FAIL);                
                return resultObject;
            }
            
            //上传到阿里云时候的图片名称及图片存储路径
            String aliyunFileName = fileId+extendName; 
            String aliUrl = key+aliyunFileName;  //获得头像在阿里云图片存储路径
            //将图片上传到阿里云
            if(OSSUploadObjUtil.uploadFile(AliYunConfig.getBucketName(), aliUrl, inputStream)==false){
                //上传图片失败
                resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_SUCCESS);
                resultObject.setErrcode(SecurityConstant.UPLOAD_FAIL_CODE);
                resultObject.setMessage(SecurityConstant.UPLOAD_FAIL);      
                return resultObject;
            }
            
            OssImageDataResult ossImageDataResult = new OssImageDataResult();
            ossImageDataResult.setFileId(fileId.toString());
            ossImageDataResult.setFileUrl(AliYunConfig.getImageHost()+aliUrl);
            resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_SUCCESS);
            resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_SUCCESS);
            resultObject.setMessage(OssConstant.IMG_UPLOAD_SUCCESS);
            resultObject.setData(ossImageDataResult);
            
        } catch (Exception e) {
            LogWriter.writeErrorLog(String.format("上传失败,原因:%s", e.getMessage()));
            e.printStackTrace();
            //上传图片失败
            resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_FAIL);
            resultObject.setErrcode(ApiResponseConstant.API_UNKNOWN);
            resultObject.setMessage(SecurityConstant.UPLOAD_FAIL);
            return resultObject;
        } finally{          
            try {
                if(inputStream!=null){
                    inputStream.close();
                }
            } catch (IOException e) {
                LogWriter.writeErrorLog(String.format("上传失败,原因:%s", e.getMessage()));
                //上传图片失败
                resultObject.setRetcode(ApiResponseConstant.API_RESQUEST_FAIL);
                resultObject.setErrcode(ApiResponseConstant.API_UNKNOWN);
                resultObject.setMessage(SecurityConstant.UPLOAD_FAIL);
                return resultObject;
            }
        }
        return resultObject;
    }
 
           

    /**
     * 保存上传的文件相关信息
     * @param fileId : 文件编号
     * @param extendName : 扩展名
     * @param filePath : 不含主机头的路径
     * @return
     */
    public Long saveFileContent(String extendName,String filePath,String fileName){
        Long fileId=0L; 
        try {
            OssFile file = new OssFile();
            file.setOssFileId(fileId);
            file.setFileName(fileName);
            file.setExtendName(extendName);
            file.setFilePath(filePath);
            file.setCreateTime(new Date());
            file.setUpdateTime(new Date());
            if(ossFileDao.insertSelective(file)>0){
                fileId=file.getOssFileId();
            }
        } catch (Exception e) {
            LogWriter.writeErrorLog("保存上传图片信息异常========>"+e);
        }
        
        return fileId;
    }
 
            

import com.aliyun.oss.OSSClient;
import com.ds.tech.utility.common.ConfigUtil;
import com.ds.tech.utility.log4j.LogWriter;
import java.io.InputStream;
/**
 * 上传阿里云oss服务
 * @author Administrator
 *
 */
public class OSSUploadObjUtil {
    private static OSSClient client = null;
    
    static {
        String accessId = ConfigUtil.getSettings("access_id");
        String accessSecret = ConfigUtil.getSettings("access_secret");
        String endpoint = ConfigUtil.getSettings("endpoint");
        client = new OSSClient(endpoint, accessId, accessSecret);
    }
    /**
     * 通过文件流上传文件
     * @param bucketName
     * @param saveFilePath
     * @param input
     * @return
     */
    public static boolean uploadFile(String bucketName, String key,InputStream inputStream){
        try {
            client.putObject(bucketName, key, inputStream);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            LogWriter.writeErrorLog(e);
        }
        return false;
    }
}

实体:

public class OssImageDataResult implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private String fileId;
  
    private String fileUrl;

    public String getFileId() {
        return fileId;
    }
    public void setFileId(String fileId) {
        this.fileId = fileId;
    }

    public String getFileUrl() {
        return fileUrl;
    }
    public void setFileUrl(String fileUrl) {
        this.fileUrl = fileUrl;
    }
 
         
}
























  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值