上传图片携带参数至服务器工具类


本篇采用的上传方式是HttpUrlConnection方法,下篇将写出xutils上传的方法(包括多图片上传显示进度条等)。敬请期待。

//UpLoadFileVideoUtils这个类就是工具类,只需要将这个类拷贝至项目中即可使用。下面是代码部分:

解释下方法里面的参数含义:

Map<String, String> params---用来装你上传服务器需要的参数,注意的是:参数的Key值必须填入的是你服务器定好的参数字段,

Map<String, File> files--将你选择好的图片转成File文件用Map装起来 图片的Key值可以自己命名。

/**
 * @author: ZQF_DemoStyle
 * @类 说 明:
 * @version 1.0
 * @创建时间:2016-4-18 下午1:18:24
 */
public class UpLoadFileVideoUtils {

	private StringBuilder sb2;

	public boolean defaultUploadMethod(String actionUrl,
			Map<String, String> params, Map<String, File> files)
			throws IOException {
		String PREFIX = "--";
		String BOUNDARY = java.util.UUID.randomUUID().toString();
		String LINEND = "\r\n";
		String MULTIPART_FROM_DATA = "multipart/form-data";
		String CHARSET = "UTF-8";
		URL uri = new URL(actionUrl);
		HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
		conn.setReadTimeout(5 * 10000); // 缓存的最长时间
		// conn.setFixedLengthStreamingMode(contentLength);
		conn.setAllowUserInteraction(false);
		conn.setDoInput(true);// 允许输入
		conn.setDoOutput(true);// 允许输出
		conn.setUseCaches(false); // 不允许使用缓存
		conn.setRequestMethod("POST");
		conn.setRequestProperty("connection", "keep-alive");
		conn.setRequestProperty("Charsert", "UTF-8");
		conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA
				+ ";boundary=" + BOUNDARY);
		// 首先组拼文本类型的参数
		StringBuilder sub = new StringBuilder();
		for (Map.Entry<String, String> entry : params.entrySet()) {
			sb.append(PREFIX);
			sb.append(BOUNDARY);
			sb.append(LINEND);
			sb.append("Content-Disposition: form-data; name=\""
					+ entry.getKey() + "\"" + LINEND);
			sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);
			sb.append("Content-Transfer-Encoding: 8bit" + LINEND);
			sb.append(LINEND);
			sb.append(entry.getValue());
			sb.append(LINEND);
		}

		DataOutputStream outStream = new DataOutputStream(
				conn.getOutputStream());
		outStream.write(sb.toString().getBytes());
		InputStream in = null;
		// 发送流文件数据
		if (files != null) {
			for (Map.Entry<String, File> file : files.entrySet()) {
				StringBuilder sb1 = new StringBuilder();
				sb1.append(PREFIX);
				sb1.append(BOUNDARY);
				sb1.append(LINEND);
				sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""
						+ file.getKey() + ".jpg" + "\"" + LINEND);
				sb1.append("Content-Type: video/mpeg4; charset=" + CHARSET
						+ LINEND);
				sb1.append(LINEND);
				outStream.write(sb1.toString().getBytes());
				InputStream is = new FileInputStream(file.getValue());
				byte[] buffer = new byte[1024 * 8];
				int len = 0;
				while ((len = is.read(buffer)) != -1) {
					outStream.write(buffer, 0, len);
				}
				is.close();
				outStream.write(LINEND.getBytes());
			}

			// 请求结束标志
			byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
			outStream.write(end_data);
			outStream.flush();
			// 得到响应码
			int res = conn.getResponseCode();
			if (res == 200) {
				in = conn.getInputStream();
				int ch;
			if (res == 200) {
<span style="white-space:pre">				</span>in = conn.getInputStream();
<span style="white-space:pre">				</span>int ch;
<span style="white-space:pre">				</span>su2 = new StringBuilder();
<span style="white-space:pre">				</span>while ((ch = in.read()) != -1) {
<span style="white-space:pre">					</span>su2.append((char) ch);
<span style="white-space:pre">				</span>}
			}
			outStream.close();
			conn.disconnect();
			in.close();
			LogUtil.logD("返回的数据---->" + su2 + "");
			return true;
		}
		return false;
	}
最后根据返回的boolean值判断上传成功与否,成功返回的数据在sb2中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个基于Java的图片上传工具类的示例代码: ```java import java.io.File; import java.io.IOException; import java.util.UUID; import org.springframework.web.multipart.MultipartFile; public class ImageUploadUtil { public static String uploadImage(MultipartFile file, String uploadPath) { // 生成新的文件名 String fileName = UUID.randomUUID().toString() + getFileSuffix(file.getOriginalFilename()); // 创建文件对象 File dest = new File(uploadPath + "/" + fileName); // 判断目录是否存在,不存在则创建 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { // 保存文件 file.transferTo(dest); // 返回文件名 return fileName; } catch (IOException e) { e.printStackTrace(); return null; } } // 获取文件后缀 private static String getFileSuffix(String fileName) { return fileName.substring(fileName.lastIndexOf(".")); } } ``` 该工具类使用了Java的File类和MultipartFile类,其中getFileSuffix()方法用于获取上传文件的后缀名,而uploadImage()方法则接收一个MultipartFile类型的文件,将其转换为File类型并保存到指定的目录下,并返回文件名。 在使用时,可以将该工具类直接复制到项目中,并在需要上传图片的地方调用uploadImage()方法即可。例如,在Spring MVC中,可以在Controller中编写如下代码: ```java @PostMapping("/uploadImage") @ResponseBody public String uploadImage(@RequestParam("file") MultipartFile file) { String uploadPath = "E:/upload"; String fileName = ImageUploadUtil.uploadImage(file, uploadPath); return fileName; } ``` 其中,@PostMapping注解用于处理POST请求,@RequestParam注解用于接收上传的文件。在方法中,调用ImageUploadUtil.uploadImage()方法上传文件,并将上传后的文件名返回给前端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆流的剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值