此处主要注意包是否导入正确;我们使用的是七牛云的包
import com.google.gson.Gson; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.Random; import java.util.UUID; /*上传*/ public class QiNiuUpload { //1 .设置好账号的ACCESS_KEY和SECRET_KEY//从七牛云的官网登录后可以获得 //ak,sk用来登录七牛云 private static String ACCESS_KEY = QiNiuSA.ACCESSKEY; private static String SECRET_KEY = QiNiuSA.SECRETKEY; //2. 要上传的空间//对应要上传到七牛上,自己创建的那个空间(注意设置公开) private static String bucketname = QiNiuSA.BUCKET; //3. 获得上传的凭证 private static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); private static Configuration cfg = new Configuration(Region.huanan()); //4. 根据上传凭证获得上传对象,我们通过上传对象来上传文件 private static UploadManager uploadManager = new UploadManager(cfg); //5. 上传的方法 // 传入需要上传的文件,返回一个字符串的路径,表示当前文件在七牛云的存放位置 public static String uploadFile(MultipartFile file) { try { // 5.1 获取上传文件的原始名字 String orderFilename = file.getOriginalFilename(); // 5.2 截取末尾的文件格式,组成新名字 String fileName = UUID.randomUUID().toString() + orderFilename.substring(orderFilename.lastIndexOf(".")); //5.3 上传的文件字节数组,字节流上传 byte[] bytes = file.getBytes(); String token = auth.uploadToken(bucketname); //5.4 开始上传 Response response = uploadManager.put(bytes, fileName, token); // 5.5 获得七牛云返回的gosn数据并解析成字符串 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); System.out.println(putRet.key); System.out.println(putRet.toString()); //5.6 重新组织文件的存储路径并返回 return QiNiuSA.DOMAIN + "/" + fileName; } catch (QiniuException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }以上工作准备好以后,我们只需要获得一个文件,而后端一般是通过controller来与前端交互. 因此我们需要创建一个数据接口用来接收数据并返回;
@RestController public class UpLoad{ //上传文件的接口 @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(MultipartFile file) { //调用刚写好的工具类 , 将文件传至七牛云上,返回完整的url地址 String filePath = QiNiuUpload.uploadFile(file); return filePath; } }在获得文件的存放地址以后,将这个字符串存放到我们的数据库中,实现文件上传
前端发送文件的方式有很多种,看这里