应用产生背景:最近公司要实现在TV端浏览用户照片的功能,之前通过拔插U盘/SD卡的方式,预先往用户文件夹存入图片。后来觉得这种方式特别繁琐,而且还得区分是哪个用户的文件夹(相册)。所以利用应用部署网页,采用扫描二维码方式上传图片
电视端:
手机页面:
部署网页利用到了AndServer,一个Android端的web服务器
框架github地址:https://github.com/yanzhenjie/AndServer
网页UI地址:https://github.com/Tencent/weui
将上传网页放入项目assets目录下
开启服务,部署网页
mAssetManager = getAssets();
AndServer andServer = new AndServer.Build().port(8080).timeout(10 * 1000)
.registerHandler("upload", new PhotoUploadHandler(this))
.website(new AssetsWebsite(mAssetManager, ""))
.listener(mListener).build();
mServer = andServer.createServer();
服务端保存图片
FileItemFactory factory = new DiskFileItemFactory(1024 * 1024, saveDirectory);
HttpFileUpload fileUpload = new HttpFileUpload(factory);
List<FileItem> fileItems = fileUpload
.parseRequest(new HttpUploadContext((HttpEntityEnclosingRequest) request));
for (FileItem fileItem : fileItems) {
if (!fileItem.isFormField()) {
String fileName = fileItem.getName();
if (fileName.contains("/") || fileName.startsWith("image.")) {
fileName = FileUtils.getCurrentTimes() + ".jpg";
}
File uploadedFile = new File(saveDirectory, "/" + fileItem.getFieldName() + "/" + fileName);
if (uploadedFile.exists()) {
continue;
}
LogUtils.d("ImagePath:" + uploadedFile.getPath());
fileItem.write(uploadedFile);
}
}