/**
* 后台程序
* https://github.com/TrillGates/SOBAndroidMiniWeb
*
*/
public class PostTextActivity extends AppCompatActivity {
public ArrayList<String> mArrayList; //用于存放遍历到的图片路径
private String TAG = "PostTextActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_text);
//获取储存卡读取权限
int permission = checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
Log.d(TAG, "permission-- >" + permission);
if (permission == PackageManager.PERMISSION_DENIED) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
//post请求:上传多张图片“扫描整个保存截图的目录把目录里的图片全部上传”
public void onClickImages(View view) {
new Thread(new Runnable() {
@Override
public void run() {
OutputStream outputStream = null;
//准备图片资源
if (mArrayList != null) {
mArrayList.clear();//清空下
}
mArrayList = new ArrayList<>();//把图片路径存入此集合
File file = new File("/sdcard/Pictures");
getAllFilePath(file);//获取所有图片的绝对路径
Log.d(TAG, "扫描到=" + mArrayList.size() + "张图片");
try {
String BOUNDARY = "--------------------------694710120812426434874443";
String fileKey = "files";
URL url = new URL("http://192.168.1.216:9102" + "/files/upload");
HttpURLConnection httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestMethod("POST");
httpurlconnection.setConnectTimeout(10000);
//设置请求头
httpurlconnection.setRequestProperty("User-Agent", "OnePlus A3000");
httpurlconnection.setRequestProperty("Accept", "*/*");
httpurlconnection.setRequestProperty("Cache-Control", "no-cache");
httpurlconnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
httpurlconnection.setRequestProperty("Connection", "keep-alive");
httpurlconnection.setDoInput(true);//发送POST请求必须设置允许输入
httpurlconnection.setDoOutput(true);//发送POST请求必须设置允许输出
//连接
httpurlconnection.connect();
outputStream = httpurlconnection.getOutputStream();
//准备好图片路径
if (mArrayList != null) {
boolean isLast;//是否是最后一张图
for (int i = 0; i < mArrayList.size(); i++) {
File imageFile = new File(mArrayList.get(i));
if (i == (mArrayList.size() - 1)) {
isLast = true;
} else {
isLast = false;
}
//Log.d(TAG,";;;;;;;;;"+imageFile+imageFile.getName()+fileKey+isLast);
uploadImages(imageFile, imageFile.getName(), BOUNDARY, fileKey, outputStream, isLast);
}
}
outputStream.flush();//刷新下,不刷新也没发现问题 为什么要刷新???????
//获取响应码,,,输出服务端返回的信息
int responseCode = httpurlconnection.getResponseCode();
Log.d(TAG, "responseCode-- >" + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = httpurlconnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
Log.d(TAG, "上传成功这是返回信息--- >" + bufferedReader.readLine());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();//关闭流释放资源
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* @param file 图片的路径,要上传的图片的路径
* @param fileName 图片的名称
* @param BOUNDARY 这个是请求头里的那啥玩意
* @param fileKey 接口参数
* @param outputStream
* @throws IOException
*/
private void uploadImages(File file, String fileName, String BOUNDARY, String fileKey, OutputStream outputStream, boolean isLast) throws IOException {
//设置请求体的请求头。。。
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("--");
stringBuilder.append(BOUNDARY + "\r\n");
stringBuilder.append("Content-Disposition: form-data; name=\"" + fileKey + "\"; filename=\"" + fileName + "\"" + "\r\n");
stringBuilder.append("Content-Type: image/png" + "\r\n");//image/jpeg
stringBuilder.append("\r\n");
//写入数据
byte[] bytes = stringBuilder.toString().getBytes("UTF-8");
outputStream.write(bytes);//将请求体的请求头。写入
//将图片写入
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
byte[] bytes1 = new byte[1024];
int len;
while ((len = bufferedInputStream.read(bytes1, 0, bytes1.length)) != -1) {
outputStream.write(bytes1, 0, len);
}
//写请求体的 尾部信息
StringBuilder sb = new StringBuilder();
if (isLast) {
sb.append("\r\n");
sb.append("--" + BOUNDARY + "--" + "\r\n");
sb.append("\r\n");
} else {
sb.append("\r\n");
sb.append("--" + BOUNDARY + "\r\n");
}
outputStream.write(sb.toString().getBytes("UTF-8"));
//outputStream.flush();//刷新下
}
}).start();
}
//扫描截图目录 为多文件上传,准备图片
public void getAllFilePath(File srcFile) {
//获取指定目录所有的文件或者目录的File数组
File[] fileArray = srcFile.listFiles();
//遍历该File数组,得到每一个File对象
if (fileArray != null) {
for (File file : fileArray) {
//判断该File对象是否是文件
if (file.isFile()) {
//是:就把图片的路径添加到集合
String absolutePath = file.getAbsolutePath();
boolean add = mArrayList.add(absolutePath);
Log.d(TAG, "是否添加成功??????????????" + add);
} else {
//不是:递归
getAllFilePath(file);
}
}
}
}
}
评论
0/240
推荐文章



2025-03-27 07:59 1












2025-02-16 20:50 1


