package music.threads; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.UUID; import javax.sound.midi.MidiDevice.Info; import util.Constants; import music.gui.MyFrame; import music.info.MusicInfo; import com.amazonaws.auth.PropertiesCredentials; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.PutObjectRequest; public class ToS3Thread implements Runnable { MusicInfo music; MyFrame frame; public static String bucketName = "ringtone_test_2010"; public ToS3Thread(MusicInfo mInfo, MyFrame frm) { music = mInfo; frame = frm; } public boolean upload() { try { final AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials( ToS3Thread.class.getResourceAsStream("AwsCredentials.properties"))); frame.showMessage("start sending "+music.getTitle()+" to S3..."); String key; String uuid = UUID.randomUUID().toString(); // upload ring key = uuid + music.getRingName(); File file = new File(Constants.DOWNLOAD_DIR+music.getRingName()); s3.putObject(new PutObjectRequest(bucketName, key, file)); // 上传文件 s3.setObjectAcl(bucketName, key, CannedAccessControlList.PublicRead); // 设置权限 // upload image key = uuid + music.getImageName(); file = new File(Constants.DOWNLOAD_DIR+music.getImageName()); s3.putObject(new PutObjectRequest(bucketName, key, file)); // 上传文件 s3.setObjectAcl(bucketName, key, CannedAccessControlList.PublicRead); // 设置权限 // record result record(uuid); return true; } catch (IOException e) { e.printStackTrace(); return false; } } public synchronized void record(String uuid) { File file = new File(Constants.DOWNLOAD_DIR+Constants.RECORD_FILE); if(!file.exists()) { try { file.createNewFile(); } catch (IOException e) { System.out.println("record file create error!"); e.printStackTrace(); } } if(file.exists()) { try { FileWriter out = new FileWriter(file, true); out.write("<Record>\n"); out.write("<Title>"+music.getTitle()+"</Title>\n"); out.write("<Artist>"+music.getArtist()+"</Artist>\n"); out.write("<Album>"+music.getAlbum()+"</Album>\n"); out.write("<Score>"+music.getmScore()+"</Score>\n"); out.write("<Count>"+music.getmCounts()+"</Count>\n"); out.write("<UUID>"+uuid+"</UUID>\n"); out.write("<Ring>"+music.getRingName()+"</Ring>\n"); out.write("<Image>"+music.getImageName()+"</Image>\n"); out.write("</Record>\n\n"); out.flush(); out.close(); } catch (IOException e) { frame.showMessage("add to record file error!"); e.printStackTrace(); } } } /* public static void main(String[] args) { MusicInfo music = new MusicInfo(); music.setFilename("/home/liutao/test/a.mp3"); new Thread(new ToS3Thread(music, null)).start(); } */ @Override public void run() { if(upload()) { frame.showMessage(music.getTitle()+" to S3 success!"); frame.changeStatus(music, Constants.FINISH); } else frame.showMessage(music.getTitle()+" to S3 fail!"); } }